PHP | Хранение паролей



Хранить пароли пользователей в базе данных в открытом виде - очень плохая идея. Куда правильней будет хранить его хеш - строка, обычно определённой длины, характеризирующая пароль. Сгенерировать хеш можно, например, функциями md5() или sha1(), но ввиду быстроты работы этих алгоритмов шифрования это так же не даст необходимой безопасности. Как же быть?

С пятой версии PHP появились встроенные методы хеширования паролей. Так, получить хеш пароля можно функцией password_hash('ПАРОЛЬ', PASSWORD_DEFAULT), его можно без опаски сохранить в базу данных. А проверить валидность пароля можно функцией password_verify('ПАРОЛЬ_ТРЕБУЮЩИЙ_ПРОВЕРКИ', 'ПОЛУЧЕННЫЙ_РАНЕЕ_ХЕШ').



Пример использования

$pass = '8aZdYaB0';

$hash = password_hash($pass, PASSWORD_DEFAULT);

if (password_verify($pass, $hash)) {

echo ("Пароль верный");

} else {

echo ("Пароль неверный");

}

echo (", ");

if (password_verify('1s8', $hash)) {

echo ("Пароль верный");

} else {

echo ("Пароль неверный");

}