هش کردن
معرفی
Hash
نمای
لاراول هش
Bcrypt و Argon2 ایمن را برای ذخیره رمزهای عبور کاربر فراهم می کند. اگر از یکی از
کیت های شروع برنامه لاراول
استفاده می کنید
، Bcrypt به طور پیش فرض برای ثبت نام و احراز هویت استفاده می شود.
Bcrypt یک انتخاب عالی برای هش کردن رمزهای عبور است زیرا "ضریب کار" آن قابل تنظیم است، به این معنی که زمان تولید هش را می توان با افزایش قدرت سخت افزار افزایش داد. هنگام هش کردن رمزهای عبور، کندی خوب است. هر چه یک الگوریتم برای هش رمز عبور بیشتر طول بکشد، کاربران مخرب بیشتر طول می کشد تا «جدول های رنگین کمانی» از تمام مقادیر هش رشته ممکن را تولید کنند که ممکن است در حملات brute force علیه برنامه ها استفاده شوند.
پیکربندی
به طور پیش فرض، لاراول
bcrypt
هنگام هش کردن داده ها از درایور هش استفاده می کند. با این حال، چندین درایور هشینگ دیگر از جمله
argon
و
argon2id
.
شما می توانید درایور هش برنامه خود را با استفاده از
HASH_DRIVER
متغیر محیطی مشخص کنید. اما، اگر میخواهید تمام گزینههای درایور هش لاراول را سفارشی کنید، باید
hashing
فایل پیکربندی کامل را با استفاده از
config:publish
دستور Artisan منتشر کنید:
php artisan config:publish hashing
استفاده پایه
هش کردن رمزهای عبور
میتوانید با فراخوانی
make
روش روی
Hash
نما، رمز عبور را هش کنید:
<?php namespace App\Http\Controllers; use Illuminate\Http\RedirectResponse;use Illuminate\Http\Request;use Illuminate\Support\Facades\Hash; class PasswordController extends Controller{ /** * Update the password for the user. */ public function update(Request $request): RedirectResponse { // Validate the new password length... $request->user()->fill([ 'password' => Hash::make($request->newPassword) ])->save(); return redirect('/profile'); }}
تنظیم فاکتور کار Bcrypt
اگر از الگوریتم Bcrypt استفاده می کنید، این
make
روش به شما اجازه می دهد تا با استفاده از گزینه، ضریب کار الگوریتم را مدیریت کنید
rounds
. با این حال، فاکتور کار پیش فرض مدیریت شده توسط لاراول برای اکثر برنامه ها قابل قبول است:
$hashed = Hash::make('password', [ 'rounds' => 12,]);
تنظیم ضریب کاری Argon2
اگر از الگوریتم Argon2 استفاده میکنید، این
make
روش به شما اجازه میدهد تا ضریب کار الگوریتم را با استفاده از
گزینههای
memory
،
time
و و مدیریت کنید.
threads
با این حال، مقادیر پیش فرض مدیریت شده توسط لاراول برای اکثر برنامه ها قابل قبول است:
$hashed = Hash::make('password', [ 'memory' => 1024, 'time' => 2, 'threads' => 2,]);
برای اطلاعات بیشتر در مورد این گزینه ها، لطفاً به اسناد رسمی PHP در مورد هش آرگون مراجعه کنید .
تأیید اینکه یک رمز عبور با هش مطابقت دارد
روش
check
ارائه شده توسط
Hash
نما به شما امکان می دهد بررسی کنید که یک رشته متن ساده با یک هش داده شده مطابقت دارد:
if (Hash::check('plain-text', $hashedPassword)) { // The passwords match...}
تعیین اینکه آیا یک رمز عبور نیاز به اصلاح مجدد دارد یا خیر
روش
needsRehash
ارائه شده توسط
Hash
نما به شما امکان می دهد تعیین کنید که آیا فاکتور کار استفاده شده توسط هشر از زمان هش شدن رمز عبور تغییر کرده است یا خیر. برخی از برنامهها انتخاب میکنند که این بررسی را در طول فرآیند احراز هویت برنامه انجام دهند:
if (Hash::needsRehash($hashed)) { $hashed = Hash::make('plain-text');}