Yii2 framework backup
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

2.3 KiB

Работа с паролями

Многие разработчики знают, что хранить пароль открытым текстом нельзя, но многие до сих пор считают безопасным использование для хеширования паролей md5 или sha1. Раньше упомянутых алгоритмов было достаточно, но современное оборудование позволяет подобрать эти хеши очень быстро, методом простого перебора.

Для того, чтобы обеспечить повышенную безопасность паролей ваших пользователей даже в худшем случае (ваше приложение взломано), нужно использовать алгоритм шифрования, устойчивый к атаке перебором. Лучший вариант в текущий момент bcrypt. В PHP вы можете использовать хеши bcrypt через функцию crypt. Yii обеспечивает две вспомогательные функции, которые упрощают использование функции crypt для генерации и проверки пароля.

Когда пользователь задаёт пароль (например во время регистрации), пароль должен быть захеширован:

$hash = Yii::$app->getSecurity()->generatePasswordHash($password);

Хеш можно связать с соответствующим атрибутом модели, так чтобы он сохранялся в базе для последующего использования.

Когда пользователь попытается войти, отправленный пароль должен быть хеширован и сравнён с ранее сохранённым хешем:

if (Yii::$app->getSecurity()->validatePassword($password, $hash)) {
    // всё хорошо, пользователь может войти
} else {
    // неправильный пароль
}