fix translation

This commit is contained in:
miramir
2015-05-12 15:10:22 +05:00
parent 03953e863f
commit df092df534

View File

@@ -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). момент `bcrypt`. В PHP вы можете использовать хеши `bcrypt` через [функцию crypt](http://php.net/manual/en/function.crypt.php).
Yii обеспечивает две вспомогательные функции, которые делают использование функции `crypt` для генерации и проверки Yii обеспечивает две вспомогательные функции, которые упрощают использование функции `crypt` для генерации и проверки
пароля более простым. пароля.
Когда пользователь передаёт пароль первый раз (например во время регистрации), пароль должен быть захеширован: Когда пользователь задаёт пароль (например во время регистрации), пароль должен быть захеширован:
```php ```php
$hash = Yii::$app->getSecurity()->generatePasswordHash($password); $hash = Yii::$app->getSecurity()->generatePasswordHash($password);
``` ```
Хешь может быть связан с соответствующим аттрибутом модели, так что он может быть сохранён в базе для последующего использования. Хеш можно связать с соответствующим аттрибутом модели, так чтобы он сохранялся в базе для последующего использования.
Когда пользователь попытается войти, отправленый пароль должен быть хеширован и сравнён с ранее сохранённым хешем: Когда пользователь попытается войти, отправленый пароль должен быть хеширован и сравнён с ранее сохранённым хешем:
```php ```php
if (Yii::$app->getSecurity()->validatePassword($password, $hash)) { if (Yii::$app->getSecurity()->validatePassword($password, $hash)) {
// all good, logging user in // всё хорошо, пользователь может войти
} else { } else {
// wrong password // неправильный пароль
} }
``` ```
@@ -47,11 +46,11 @@ if (Yii::$app->getSecurity()->validatePassword($password, $hash)) {
-------------------------------- --------------------------------
Псевдослучайные данные полезны во многих ситуациях. Например, для сброса пароля с помощью электронной почты Псевдослучайные данные полезны во многих ситуациях. Например, для сброса пароля с помощью электронной почты
вам необходимо сгенерировать специальный токен, сохранить его в БД, и отправить его по почте конечному пользователю, вам необходимо сгенерировать специальный токен, сохранить его в БД, и отправить по почте конечному пользователю,
который в свою очередь подтвердит им свою личность. Очень важно, что этот маркер должен быть уникальным и сложно который в свою очередь подтвердит им свою личность. Очень важно, чтобы этот маркер был уникальным и сложно
подделываемым, чтоб злоумышленник не мог предсказать токен и сбросить пароль пользователя. подделываемым и злоумышленник не мог предсказать токен и сбросить пароль пользователя.
Хелпер безопасности Yii делает генерацию псевдослучайных данных простой: Помощник безопасности Yii делает генерацию псевдослучайных данных простой:
```php ```php
$key = Yii::$app->getSecurity()->generateRandomString(); $key = Yii::$app->getSecurity()->generateRandomString();
@@ -59,13 +58,13 @@ $key = Yii::$app->getSecurity()->generateRandomString();
Обратите внимание, что у вас должно быть установлено расширение `openssl` для генерации криптографически безопасных данных. Обратите внимание, что у вас должно быть установлено расширение `openssl` для генерации криптографически безопасных данных.
Шифрование и Дешифровка Шифрование и Расшифровка
----------------------- ------------------------
Yii предоставляет удобные вспомогательные функции, которые позволяют шифровать/дешифровать данные используя секретный ключ. Yii предоставляет удобные вспомогательные функции, которые позволяют шифровать/дешифровать данные, используя секретный ключ.
Данные переданные в функцию шифрования могут быть расшифрованы только человеком имеющим секретный ключ. Например, нам Данные, переданные в функцию шифрования, могут быть расшифрованы только человеком, имеющим секретный ключ. Например, нам
нужно хранить некоторую информацию в базе данных, но мы должны убедиться, что только пользователь, который имеет нужно хранить некоторую информацию в базе данных, но мы должны быть уверены, что только пользователь, который имеет
секретный ключ сможет посмотреть их (даже если база данных будет скомпрометирована): секретный ключ, сможет посмотреть их (даже если база данных будет скомпрометирована):
```php ```php
// $data и $secretKey передаются из формы // $data и $secretKey передаются из формы
@@ -83,7 +82,7 @@ $data = Yii::$app->getSecurity()->decryptByPassword($encryptedData, $secretKey);
Подтверждение целостности данных Подтверждение целостности данных
-------------------------------- --------------------------------
Есть ситуации, в которых вам нужно убедится, что ваши данные не были подделаны третьей стороной, или как-то повреждены. Есть ситуации, в которых вам нужно убедиться, что ваши данные не были подделаны третьей стороной, или как-то повреждены.
Yii обеспечивает простой способ подтверждения целостности данных в виде двух вспомогательных функций. Yii обеспечивает простой способ подтверждения целостности данных в виде двух вспомогательных функций.
Префикс данных генерируются из секретного ключа и данных Префикс данных генерируются из секретного ключа и данных