هش کردن
معرفی
Hash
نمای
لاراول هش
Bcrypt و Argon2 ایمن را برای ذخیره رمزهای عبور کاربر فراهم می کند.
اگر از کلاسهای داخلی
LoginController
و
RegisterController
کلاسهای موجود در برنامه لاراول خود استفاده میکنید، بهطور پیشفرض از
Bcrypt برای ثبتنام و احراز هویت استفاده میکنند.
Bcrypt یک انتخاب عالی برای هش کردن رمزهای عبور است زیرا "ضریب کار" آن قابل تنظیم است، به این معنی که زمان تولید هش را می توان با افزایش قدرت سخت افزار افزایش داد.
پیکربندی
درایور هش پیش فرض برای برنامه شما در
config/hashing.php
فایل پیکربندی پیکربندی شده است.
در حال حاضر سه درایور پشتیبانی می شود:
Bcrypt
و
Argon2
(انواع Argon2i و Argon2id).
درایور Argon2i به PHP 7.2.0 یا بالاتر و درایور Argon2id به PHP 7.3.0 یا بالاتر نیاز دارد.
استفاده پایه
میتوانید با فراخوانی
make
روش روی
Hash
نما، رمز عبور را هش کنید:
<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller;use Illuminate\Http\Request;use Illuminate\Support\Facades\Hash; class UpdatePasswordController extends Controller{ /** * Update the password for the user. * * @param Request $request * @return 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,]);
تأیید یک رمز عبور در برابر هش
این
check
روش به شما امکان میدهد بررسی کنید که یک رشته متن ساده با یک هش مشخص
مطابقت دارد.
LoginController
با این حال، اگر از همراه با لاراول
استفاده می کنید
، احتمالاً نیازی به استفاده مستقیم از آن ندارید، زیرا این کنترلر به طور
خودکار این روش را فراخوانی می کند:
if (Hash::check('plain-text', $hashedPassword)) { // The passwords match...}
بررسی اینکه آیا یک رمز عبور نیاز به اصلاح مجدد دارد یا خیر
این
needsRehash
تابع به شما امکان می دهد تعیین کنید که آیا فاکتور کار مورد استفاده توسط
هشر از زمان هش کردن رمز عبور تغییر کرده است یا خیر:
if (Hash::needsRehash($hashed)) { $hashed = Hash::make('plain-text');}