Работа с паролями
Большинство разработчиков знают, что пароли нельзя хранить в открытом виде, но многие разработчики считают, что все еще безопасно хэшировать пароли с использованием md5 или sha1. Было время, когда использование упомянутых алгоритмов хэширования было достаточным, но современное оборудование позволяет очень быстро восстанавливать такие хэши, а также более сильные, с помощью атак методом грубой силы.
Для повышения безопасности паролей пользователей, даже в самом худшем случае (если ваш приложение подверглось взлому), необходимо использовать алгоритм хэширования, устойчивый к атакам методом грубой силы. Наилучший текущий выбор — bcrypt. В PHP вы можете создать хэш bcrypt с помощью функции crypt. Yii предоставляет две вспомогательные функции, которые делают использование crypt для безопасного создания и проверки хэшей проще.
Когда пользователь впервые предоставляет пароль (например, при регистрации), пароль необходимо хэшировать:
$hash = Yii::$app->getSecurity()->generatePasswordHash($password);
Затем хэш можно связать с соответствующим атрибутом модели, чтобы он мог храниться в базе данных для последующего использования.
Когда пользователь пытается войти в систему, предоставленный пароль необходимо проверить по отношению к ранее хэшированному и сохранённому паролю:
if (Yii::$app->getSecurity()->validatePassword($password, $hash)) {
// all good, logging user in
} else {
// wrong password
}
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/guide-security-passwords.html