Автоматическое перехэширование паролей в Laravel 11

Источник: «Security Tip: Laravel 11's Automatic Password Rehashing»
Давайте проверим три опции конфигурации, доступные в рамках Автоматического перехэширования паролей: пользовательские поля, отключение перехэширования и изменение раундов bcrypt.

Следующей в нашей серии статей о функциях безопасности Laravel 11 будет довольно знакомая: "Автоматическое перехэширование паролей".

Согласно примечаниям к выпуску:

По умолчанию в Laravel используется алгоритм хеширования паролей bcrypt. "Рабочий фактор" для хэшей bcrypt можно настроить с помощью конфигурационного файла config/hashing.php или переменной среды BCRYPT_ROUNDS.

Как правило, коэффициент работы bcrypt следует увеличивать со временем, по мере роста вычислительной мощности CPU / GPU. Если вы увеличите коэффициент рабочего фактора bcrypt для вашего приложения, Laravel станет изящно и автоматически пересчитывать пароли пользователей при их аутентификации в вашем приложении.

Мы уже несколько раз затрагивали эту тему, поэтому, чтобы не повторяться, рассмотрим связанные с ней параметры конфигурации.

Отключение автоматического перехэширования

Если необходимо отключить функцию автоматического перехэширования паролей, можно установить флаг rehash_on_login в файле config/hashing.php.

// config/hashing.php

'rehash_on_login' => false,

Это может пригодиться, если вы реализовали собственную систему аутентификации или обработку паролей, когда пароли не нужно перехэшировать или поля не так просто автоматически определить средствами Laravel.

Настраиваемые поля паролей

Если приложение хранит пароли в поле базы данных, отличном от password, можно указать Laravel имя поля пароля с помощью метода getAuthPasswordName() в модели User (расширяющего трейт Authenticatable).

class User extends Authenticatable
{
// ...

public function getAuthPasswordName()
{
return 'user_password';
}
}

Laravel использует этот метод, определяющий существующий хэш пароля, проверяющий, нужно ли его перехэшировать, и если да, то сохраняющий перехэшированный пароль.

Увеличение числа раундов bcrypt

Вы можете переопределить коэффициент раундов/рабочих факторов bcrypt, используемых при хешировании паролей, установив BCRYPT_ROUNDS или опубликовав и отредактировав config/hashing.php. По умолчанию в Laravel 11 установлено значение 12, что вполне подходит для большинства приложений, но его можно увеличить, если безопасность паролей вас сильно беспокоит.

// .env

BCRYPT_ROUNDS=12
// config/hashing.php

'bcrypt' => [
'rounds' => env('BCRYPT_ROUNDS', 12),
'verify' => env('HASH_VERIFY', true),
],

Дополнительные материалы

Предыдущая Статья

Как HEAD работает в git

Следующая Статья

Введение в CSS Grid