Я использую файл sha512.js и в целях безопасности отправляю свой пароль в виде хеш-значения с пост-запросом. Теперь я хочу проверить с помощью сохраненного хеш-пароля в базе данных.
Когда я проверяю свой браузер, он может видеть пароль как хеш-значение. Затем в моем php-файле я получаю значение пароля с пост-запросом. тогда я хочу проверить это с сохраненным значением базы данных.
значение пароля для моего почтового запроса, например, — 7d4ad2ce44e568064beb480525a563daf85c676795f4083b7e177553af273ffecff41c2bbbe64428d9c0ca37744bcea4de218d356037337bcd41129bb1681b13
$email = $_POST['email'];
$passwordFromPost = $_POST['p'];
// $passwordFromPost = '7d4ad2ce44e568064beb480525a563daf85c676795f4083b7e177553af273ffecff41c2bbbe64428d9c0ca37744bcea4de218d356037337bcd41129bb1681b13';
мой пароль базы данных -:
$hashedPasswordFromDB = '$2y$11$2Nmsc11WWGZ1xEB8P3zWCezVv4QCe48BVQ8vJbXOkByUXIioWH.AS'
if (password_verify($passwordFromPost, $hashedPasswordFromDB)) {
echo 'Password is valid!';
} else {
как проверить пост-хэш-значение запроса с помощью db-хеш-значения.
Не хэшируйте пароль на клиенте, отправьте его в виде простого текста в данных POST, используя HTTPS. Отправка хеша пароля просто делает хеш паролем.
С использованием PHP password_hash
а также password_verify
, пара безопасна и проста в использовании.
Дополнительная информация: при сохранении верификатора пароля простого использования хеш-функции недостаточно, а простое добавление соли мало что делает для повышения безопасности. Вместо этого используйте функцию, такую как PBKDF2
, Rfc2898DeriveBytes
, Argon2
, password_hash
, Bcrypt
или аналогичные функции длительностью около 100 мс. Смысл в том, чтобы заставить злоумышленника потратить значительное время на поиск паролей грубой силой.
Других решений пока нет …