1. Безопасность
  2. Хеширование

Присоединяйся к нашему Telegram сообществу @webblend!

Здесь ты найдешь сниппеты по 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

Если вы используете алгоритм Bcrypt, метод make позволяет управлять фактором работы алгоритма с помощью параметра rounds; однако фактор работы по умолчанию, управляемый Laravel, подходит для большинства приложений:

$hashed = Hash::make('password', [
'rounds' => 12,
]);

Настройка фактора работы Argon2

Если вы используете алгоритм 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');
}