نسخه:

هش کردن

معرفی

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');
}