diff --git a/docs/guide-ru/security-passwords.md b/docs/guide-ru/security-passwords.md index 2527e8d489..2ef92fcac2 100644 --- a/docs/guide-ru/security-passwords.md +++ b/docs/guide-ru/security-passwords.md @@ -3,43 +3,42 @@ > Примечание: этот раздел находится на стадии разработки. -Хорошая безопасность является жизненно важной для здоровья и успеха любого приложения. -К сожалению, многие разработчики предпочитают срезать углы, когда речь заходит о безопасности, -либо из-за отсутствия понимания или потому, что считают реализацию слишком сложным. -Для того, чтобы сделанное вами на Yii приложение было как можно более безопасным, Yii включает несколько удобных -и простых в использовании функции обеспечения безопасности. +Хорошая безопасность является жизненно важной для жизни и успеха любого приложения. +К сожалению, многие разработчики предпочитают упрощять, когда речь заходит о безопасности, +либо из-за отсутствия понимания, либо потому, что считают реализацию слишком сложной. +Для того, чтобы сделанное вами на Yii приложение было как можно более безопасным, в Yii есть несколько удобных +и простых в использовании функций обеспечения безопасности. -Hashing and Verifying Passwords -------------------------------- +Хеширование и проверка пароля +----------------------------- Многие разработчики знают, что хранить пароль открытым текстом нельзя, но многие до сих пор считают безопасным -использование для хеширование паролей `md5` или `sha1`. Раньше упомянутых алгоритмов было достаточно, но современное -оборудование позволяет подобрать эти хеши очень быстро, используя метод грубой силы. +использование для хеширования паролей `md5` или `sha1`. Раньше упомянутых алгоритмов было достаточно, но современное +оборудование позволяет подобрать эти хеши очень быстро, методом простого перебора. -Для того, чтоб обеспечить повышенную безопасность паролей ваших пользователей даже в худшем случае (ваше +Для того, чтобы обеспечить повышенную безопасность паролей ваших пользователей даже в худшем случае (ваше приложение взломано), нужно использовать алгоритм шифрования, устоичивый к атаке перебором. Лучший вариант в текущий -момент `bcrypt`. В PHP вы можете использовать хеши `bcrypt` используя [функцию crypt](http://php.net/manual/en/function.crypt.php). -Yii обеспечивает две вспомогательные функции, которые делают использование функции `crypt` для генерации и проверки -пароля более простым. +момент `bcrypt`. В PHP вы можете использовать хеши `bcrypt` через [функцию crypt](http://php.net/manual/en/function.crypt.php). +Yii обеспечивает две вспомогательные функции, которые упрощают использование функции `crypt` для генерации и проверки +пароля. -Когда пользователь передаёт пароль первый раз (например во время регистрации), пароль должен быть захеширован: +Когда пользователь задаёт пароль (например во время регистрации), пароль должен быть захеширован: ```php $hash = Yii::$app->getSecurity()->generatePasswordHash($password); ``` -Хешь может быть связан с соответствующим аттрибутом модели, так что он может быть сохранён в базе для последующего использования. +Хеш можно связать с соответствующим аттрибутом модели, так чтобы он сохранялся в базе для последующего использования. Когда пользователь попытается войти, отправленый пароль должен быть хеширован и сравнён с ранее сохранённым хешем: - ```php if (Yii::$app->getSecurity()->validatePassword($password, $hash)) { - // all good, logging user in + // всё хорошо, пользователь может войти } else { - // wrong password + // неправильный пароль } ``` @@ -47,11 +46,11 @@ if (Yii::$app->getSecurity()->validatePassword($password, $hash)) { -------------------------------- Псевдослучайные данные полезны во многих ситуациях. Например, для сброса пароля с помощью электронной почты -вам необходимо сгенерировать специальный токен, сохранить его в БД, и отправить его по почте конечному пользователю, -который в свою очередь подтвердит им свою личность. Очень важно, что этот маркер должен быть уникальным и сложно -подделываемым, чтоб злоумышленник не мог предсказать токен и сбросить пароль пользователя. +вам необходимо сгенерировать специальный токен, сохранить его в БД, и отправить по почте конечному пользователю, +который в свою очередь подтвердит им свою личность. Очень важно, чтобы этот маркер был уникальным и сложно +подделываемым и злоумышленник не мог предсказать токен и сбросить пароль пользователя. -Хелпер безопасности Yii делает генерацию псевдослучайных данных простой: +Помощник безопасности Yii делает генерацию псевдослучайных данных простой: ```php $key = Yii::$app->getSecurity()->generateRandomString(); @@ -59,13 +58,13 @@ $key = Yii::$app->getSecurity()->generateRandomString(); Обратите внимание, что у вас должно быть установлено расширение `openssl` для генерации криптографически безопасных данных. -Шифрование и Дешифровка ------------------------ +Шифрование и Расшифровка +------------------------ -Yii предоставляет удобные вспомогательные функции, которые позволяют шифровать/дешифровать данные используя секретный ключ. -Данные переданные в функцию шифрования могут быть расшифрованы только человеком имеющим секретный ключ. Например, нам -нужно хранить некоторую информацию в базе данных, но мы должны убедиться, что только пользователь, который имеет -секретный ключ сможет посмотреть их (даже если база данных будет скомпрометирована): +Yii предоставляет удобные вспомогательные функции, которые позволяют шифровать/дешифровать данные, используя секретный ключ. +Данные, переданные в функцию шифрования, могут быть расшифрованы только человеком, имеющим секретный ключ. Например, нам +нужно хранить некоторую информацию в базе данных, но мы должны быть уверены, что только пользователь, который имеет +секретный ключ, сможет посмотреть их (даже если база данных будет скомпрометирована): ```php // $data и $secretKey передаются из формы @@ -83,7 +82,7 @@ $data = Yii::$app->getSecurity()->decryptByPassword($encryptedData, $secretKey); Подтверждение целостности данных -------------------------------- -Есть ситуации, в которых вам нужно убедится, что ваши данные не были подделаны третьей стороной, или как-то повреждены. +Есть ситуации, в которых вам нужно убедиться, что ваши данные не были подделаны третьей стороной, или как-то повреждены. Yii обеспечивает простой способ подтверждения целостности данных в виде двух вспомогательных функций. Префикс данных генерируются из секретного ключа и данных