我使用sha512.js文件,出于安全考虑,我将密码作为哈希值发送给帖子请求。现在我想检查数据库中的保存哈希密码。 当我检查我的浏览器时可以看到密码作为哈希值。然后在我的php文件中,我获得了带有post请求的密码值。然后我想用数据库保存的值检查它。
我的帖子请求密码值如 - 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哈希值检查发布请求哈希值。
答案 0 :(得分:2)
不要在客户端中散列密码,使用HTTPS在POST数据中以纯文本形式发送密码。发送密码的哈希值只会使哈希值成为密码。
使用PHP password_hash
和password_verify
,该对安全且易于使用。
更多信息:仅使用哈希函数保存密码验证程序是不够的,只添加盐对提高安全性几乎没有作用。而是使用PBKDF2
,Rfc2898DeriveBytes
,Argon2
,password_hash
,Bcrypt
或类似函数等函数,持续时间约为100毫秒。关键是要让攻击者花大量时间通过蛮力找到密码。