Хранение паролей в Yii2

Здравствуйте! Сегодня хотелось бы поговорить о методах, позволяющих повысить безопасность, в приложениях на Yii2.

Поскольку алгоритмы шифрования паролей алгоритмами md5 or sha1 уже не внушают сильного доверия. В Yii2 был реализован метод реализующий хеширование bcrypt.


 

$hash_pass=Yii::$app->getSecurity()->generatePasswordHash('123');

 

в результате выполнения данного метода переменная $hash_pass будет содержать приблизительно следующее значение из 64 символов

 

$2y$13$imm.m0q9qN/IrWF4AtmH4ejHyS3d.ElmkayY3vQ69DTApgEY4ne36

 

Также у generatePasswordHash можно указать вторым параметром сложность шифрования

 

$hash_pass=Yii::$app->getSecurity()->generatePasswordHash('123',10);

 

по умолчанию этот параметр имеет значение 13. В официальной документации рекомендуют выставлять этот параметр повыше, но не стоит увлекаться.

Это довольно ресурсоемкий процесс. Если представить, что ваш компьютер сосчитает хеш со сложностью 14 за 1 секунду, то формула по нахождению времени расчета хеша будет выглядеть так 2^(сложность — 14) секунд.

В отличии от md5, при повторном вызове данного метода, будет сгенерирован абсолютно другой набор символов! Для этого для валидации пароля используется следующий код.

 

Yii::$app->getSecurity()->validatePassword($pass, $hash_pass);

 

Метод вернет true в случае успешной проверки и false в случае несоответствия данных.

comments powered by HyperComments
user
2015-06-11 10:33:30
$hash_pass 60 символов а не 64 if (!is_string($hash) || strlen($hash) !== 60) { throw new Exception('Unknown error occurred while generating hash.'); } это метод generatePasswordHash
При копировании материалов обратная ссылка на play-stop.ru желательна обязательна!