بیاید در مورد Hashing در لاراول صحبت کنیم. این یکی از بخشهای حیاتی در هر سیستم است که با دادههای حساس مانند پسوردها سروکار دارد.
🔒 Hashing در لاراول
لاراول به طور پیشفرض از Bcrypt برای هش کردن پسوردها استفاده میکنه، ولی امکان استفاده از الگوریتمهای دیگه مثل Argon2 هم وجود داره.
🧰 هش کردن پسوردها در لاراول
1. هش کردن پسورد:
برای هش کردن پسورد، از متد Hash::make() استفاده میکنیم:
2. مقایسه پسورد ورودی با پسورد هششده:
برای چک کردن اینکه پسورد ورودی با پسورد هششده مطابقت داره یا نه، از متد Hash::check() استفاده میکنیم:
نکته:
Hash::check()پسورد ورودی رو با پسورد هششده مقایسه میکنه.
⚙️ تنظیمات الگوریتمهای Hashing
لاراول به طور پیشفرض از الگوریتم Bcrypt استفاده میکنه، ولی میتونی الگوریتمهای دیگه مثل Argon2 رو هم انتخاب کنی.
1. تنظیمات در config/hashing.php:
-
bcrypt: استاندارد و امن برای استفاده در اکثر موارد.
-
argon: الگوریتم جدیدتر و مقاومتر.
2. تغییر تنظیمات در .env:
🧑🔧 تغییر پسورد (در زمان ورود یا ثبتنام)
وقتی یک کاربر جدید ثبتنام میکنه یا پسورد خودش رو تغییر میده، باید پسورد هش شده رو ذخیره کنی:
🛡 اعتبارسنجی پسوردها
لاراول یک Validation Rule برای بررسی صحت پسوردها فراهم کرده که به طور پیشفرض از bcrypt استفاده میکنه.
1. اعتبارسنجی با Hash::check() در Controller:
💡 هش کردن دیگر دادهها
همچنین میتونی هر نوع دادهای رو هش کنی، نه فقط پسورد. مثلاً برای ایمیلها، یا حتی مقادیر خاصی که نیاز به حفظ امنیت دارند:
🚨 نکات امنیتی
-
همیشه از الگوریتمهایی مثل Bcrypt یا Argon2 استفاده کن، چون امنیت بالایی دارند.
-
Hashing به معنی رمزنگاری یکطرفه است. پس از هش کردن، نمیتوان دادهی اصلی رو به راحتی بازیابی کرد.
📋 جمعبندی
| عمل | کد |
|---|---|
| هش کردن پسورد | Hash::make($password) |
| مقایسه پسورد | Hash::check($inputPassword, $hashedPassword) |
تنظیم الگوریتم در .env | HASH_DRIVER=argon2i |
| اعتبارسنجی پسورد | Hash::check() |
ا