هش کردن
معرفی
Hash
نمای
لاراول هش
Bcrypt و Argon2 ایمن را برای ذخیره رمزهای عبور کاربر فراهم می کند. اگر از
یکی از
کیت های شروع برنامه لاراول
استفاده می کنید
، Bcrypt به طور پیش فرض برای ثبت نام و احراز هویت استفاده می شود.
Bcrypt یک انتخاب عالی برای هش کردن رمزهای عبور است زیرا "ضریب کار" آن قابل تنظیم است، به این معنی که زمان تولید هش را می توان با افزایش قدرت سخت افزار افزایش داد. هنگام هش کردن رمزهای عبور، کندی خوب است. هر چه یک الگوریتم برای هش رمز عبور بیشتر طول بکشد، کاربران مخرب بیشتر طول می کشد تا «جدول های رنگین کمانی» از تمام مقادیر هش رشته ممکن را تولید کنند که ممکن است در حملات brute force علیه برنامه ها استفاده شوند.
پیکربندی
درایور هش پیش فرض برای برنامه شما در فایل پیکربندی برنامه شما پیکربندی
شده است
config/hashing.php
. در حال حاضر چندین درایور پشتیبانی شده وجود دارد:
Bcrypt
و
Argon2
(انواع Argon2i و Argon2id).
استفاده پایه
هش کردن رمزهای عبور
میتوانید با فراخوانی
make
روش روی
Hash
نما، رمز عبور را هش کنید:
<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller;use Illuminate\Http\Request;use Illuminate\Support\Facades\Hash; class PasswordController extends Controller{ /** * Update the password for the user. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function update(Request $request) { // Validate the new password length... $request->user()->fill([ 'password' => Hash::make($request->newPassword) ])->save(); }}
تنظیم فاکتور کار 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');}