مارک پلاس

تکنولوژی نوین اینترنتی

Hashing لاراول

دسته‌بندی‌ها

Hashing لاراول
Hashing لاراول

بیاید در مورد Hashing در لاراول صحبت کنیم. این یکی از بخش‌های حیاتی در هر سیستم است که با داده‌های حساس مانند پسوردها سروکار دارد.

🔒 Hashing در لاراول

لاراول به طور پیش‌فرض از Bcrypt برای هش کردن پسوردها استفاده می‌کنه، ولی امکان استفاده از الگوریتم‌های دیگه مثل Argon2 هم وجود داره.


🧰 هش کردن پسوردها در لاراول

1. هش کردن پسورد:

برای هش کردن پسورد، از متد Hash::make() استفاده می‌کنیم:

php
use Illuminate\Support\Facades\Hash; $password = 'secret'; $hashedPassword = Hash::make($password);

2. مقایسه پسورد ورودی با پسورد هش‌شده:

برای چک کردن اینکه پسورد ورودی با پسورد هش‌شده مطابقت داره یا نه، از متد Hash::check() استفاده می‌کنیم:

php
if (Hash::check('secret', $hashedPassword)) { // پسورد درست است } else { // پسورد اشتباه است }

نکته: Hash::check() پسورد ورودی رو با پسورد هش‌شده مقایسه می‌کنه.


⚙️ تنظیمات الگوریتم‌های Hashing

لاراول به طور پیش‌فرض از الگوریتم Bcrypt استفاده می‌کنه، ولی می‌تونی الگوریتم‌های دیگه مثل Argon2 رو هم انتخاب کنی.

1. تنظیمات در config/hashing.php:

php
'driver' => env('HASH_DRIVER', 'bcrypt'),
  • bcrypt: استاندارد و امن برای استفاده در اکثر موارد.

  • argon: الگوریتم جدیدتر و مقاوم‌تر.

2. تغییر تنظیمات در .env:

env
HASH_DRIVER=argon2i

🧑‍🔧 تغییر پسورد (در زمان ورود یا ثبت‌نام)

وقتی یک کاربر جدید ثبت‌نام می‌کنه یا پسورد خودش رو تغییر می‌ده، باید پسورد هش شده رو ذخیره کنی:

php
use Illuminate\Support\Facades\Hash; $user->password = Hash::make('newPassword'); $user->save();

🛡 اعتبارسنجی پسوردها

لاراول یک Validation Rule برای بررسی صحت پسوردها فراهم کرده که به طور پیش‌فرض از bcrypt استفاده می‌کنه.

1. اعتبارسنجی با Hash::check() در Controller:

php
public function updatePassword(Request $request) { $request->validate([ 'current_password' => 'required', 'new_password' => 'required|min:8|confirmed', ]); if (Hash::check($request->current_password, auth()->user()->password)) { auth()->user()->update([ 'password' => Hash::make($request->new_password) ]); return back()->with('success', 'پسورد شما تغییر کرد!'); } else { return back()->withErrors(['current_password' => 'پسورد فعلی اشتباه است.']); } }

💡 هش کردن دیگر داده‌ها

همچنین می‌تونی هر نوع داده‌ای رو هش کنی، نه فقط پسورد. مثلاً برای ایمیل‌ها، یا حتی مقادیر خاصی که نیاز به حفظ امنیت دارند:

php
$hashedEmail = Hash::make($email);

🚨 نکات امنیتی

  • همیشه از الگوریتم‌هایی مثل Bcrypt یا Argon2 استفاده کن، چون امنیت بالایی دارند.

  • Hashing به معنی رمزنگاری یکطرفه است. پس از هش کردن، نمی‌توان داده‌ی اصلی رو به راحتی بازیابی کرد.


📋 جمع‌بندی

عملکد
هش کردن پسوردHash::make($password)
مقایسه پسوردHash::check($inputPassword, $hashedPassword)
تنظیم الگوریتم در .envHASH_DRIVER=argon2i
اعتبارسنجی پسوردHash::check()

ا

محتوای مرتبط

پست‌های مرتبط