mirror of
https://github.com/yiisoft/yii2.git
synced 2026-03-09 08:47:34 +01:00
* Updated php.net link for some MemCache properties [skip ci] * Changed protocol to https for links to php.net in comments * Changed protocol to https for links to php.net in code * Changed www.php.net (http) to secure.php.net (https) in comments * Changed www.php.net (http) to secure.php.net (https) in code * Changed protocol to https for links to php.net in UPGRADE.md * Changed protocol to https for links to pecl.php.net in comments * Changed us.php.net to secure.php.net (https) in comments * Changed protocol to https for links to php.net in docs * Changed www.php.net (http) to secure.php.net (https) in docs * Changed protocol to https for links to pecl.php.net in docs * Changed ru/jp.php.net to secure.php.net (https) in docs Don't sure about russian guide: is this links meant to be for guide on russian, or not?
32 lines
2.3 KiB
Markdown
32 lines
2.3 KiB
Markdown
Работа с паролями
|
||
=================
|
||
|
||
Многие разработчики знают, что хранить пароль открытым текстом нельзя, но многие до сих пор считают безопасным
|
||
использование для хеширования паролей `md5` или `sha1`. Раньше упомянутых алгоритмов было достаточно, но современное
|
||
оборудование позволяет подобрать эти хеши очень быстро, методом простого перебора.
|
||
|
||
Для того, чтобы обеспечить повышенную безопасность паролей ваших пользователей даже в худшем случае (ваше
|
||
приложение взломано), нужно использовать алгоритм шифрования, устойчивый к атаке перебором. Лучший вариант в текущий
|
||
момент `bcrypt`. В PHP вы можете использовать хеши `bcrypt` через [функцию crypt](https://secure.php.net/manual/en/function.crypt.php).
|
||
Yii обеспечивает две вспомогательные функции, которые упрощают использование функции `crypt` для генерации и проверки
|
||
пароля.
|
||
|
||
Когда пользователь задаёт пароль (например во время регистрации), пароль должен быть захеширован:
|
||
|
||
|
||
```php
|
||
$hash = Yii::$app->getSecurity()->generatePasswordHash($password);
|
||
```
|
||
|
||
Хеш можно связать с соответствующим атрибутом модели, так чтобы он сохранялся в базе для последующего использования.
|
||
|
||
Когда пользователь попытается войти, отправленный пароль должен быть хеширован и сравнён с ранее сохранённым хешем:
|
||
|
||
```php
|
||
if (Yii::$app->getSecurity()->validatePassword($password, $hash)) {
|
||
// всё хорошо, пользователь может войти
|
||
} else {
|
||
// неправильный пароль
|
||
}
|
||
```
|