Документация Laravel 10.x
Здесь ты найдешь сниппеты по Laravel и полезные советы по веб-разработке.
Фасад Laravel Hash
предоставляет безопасное хеширование Bcrypt и Argon2 для хранения паролей пользователей. Если вы используете один из комплектов стартового кода приложения Laravel, Bcrypt будет использоваться по умолчанию для регистрации и аутентификации.
Bcrypt - отличный выбор для хеширования паролей, потому что его "фактор работы" можно настраивать, что означает, что время генерации хэша может увеличиваться при увеличении мощности оборудования. При хешировании паролей медленность - это хорошо. Чем дольше алгоритм хеширует пароль, тем больше времени злонамеренным пользователям требуется для создания "радужных таблиц" всех возможных значений хэша строк, которые могут использоваться в атаках методом перебора на приложения.
Настройка хеш-драйвера по умолчанию для вашего приложения выполняется в конфигурационном файле вашего приложения config/hashing.php
. В настоящее время поддерживаются несколько драйверов: Bcrypt и Argon2 (варианты Argon2i и Argon2id).
Вы можете хешировать пароль, вызвав метод make
на фасаде Hash
:
<?php namespace App\Http\Controllers; use Illuminate\Http\RedirectResponse;use Illuminate\Http\Request;use Illuminate\Support\Facades\Hash; class PasswordController extends Controller{ /** * Обновить пароль пользователя. */ public function update(Request $request): RedirectResponse { // Проверка длины нового пароля... $request->user()->fill([ 'password' => Hash::make($request->newPassword) ])->save(); return redirect('/profile'); }}
Если вы используете алгоритм Bcrypt, метод make
позволяет управлять фактором работы алгоритма с помощью параметра rounds
; однако фактор работы по умолчанию, управляемый Laravel, подходит для большинства приложений:
$hashed = Hash::make('password', [ 'rounds' => 12,]);
Если вы используете алгоритм Argon2, метод make
позволяет управлять фактором работы алгоритма с помощью параметров memory
, time
и threads
; однако значения по умолчанию, управляемые Laravel, подходят для большинства приложений:
$hashed = Hash::make('password', [ 'memory' => 1024, 'time' => 2, 'threads' => 2,]);
Примечание Дополнительную информацию по этим параметрам можно найти в официальной документации PHP по хэшированию Argon.
Метод check
, предоставленный фасадом Hash
, позволяет проверить, соответствует ли данный строковый текст хэшу:
if (Hash::check('plain-text', $hashedPassword)) { // Пароли совпадают...}
Метод needsRehash
, предоставленный фасадом Hash
, позволяет определить, изменился ли фактор работы, используемый хешером, с момента хеширования пароля. Некоторые приложения выбирают выполнение этой проверки в процессе аутентификации приложения:
if (Hash::needsRehash($hashed)) { $hashed = Hash::make('plain-text');}