【问题标题】:Password Hashing and Password Verifying [duplicate]密码散列和密码验证 [重复]
【发布时间】:2020-08-16 09:29:53
【问题描述】:

我通过散列密码

$hashedpassword = password_hash($Password, PASSWORD_DEFAULT);

这会将密码作为散列值存储到数据库中。 但是当我尝试通过

登录时
$Password=$_POST['Password'];

$hashedpassword = password_hash($Password, PASSWORD_DEFAULT);
if(password_verify($Password, $hashedpassword))

无论密码是否正确,它都会告诉我密码正确。 有没有办法解决这个问题,所以我可以散列密码,但使用输入的(非散列)密码登录。

【问题讨论】:

  • 看起来你在尝试登录时正在重新散列,你不应该那样做。
  • 如果我没记错的话,您每次用户登录时都会重新散列密码。

标签: php php-password-hash


【解决方案1】:

在过去的某个时间点,当创建帐户或上次更改密码时,您应该存储散列密码。

您需要从数据库中获取存储的密码哈希并将其与password_verify 一起使用。

目前,您正在对新提交的密码进行哈希处理,并根据该密码验证提交的密码,所以当然,它总是匹配的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-03
    • 2019-05-24
    • 1970-01-01
    • 2016-05-22
    • 2020-02-29
    • 2017-12-26
    • 2020-06-06
    相关资源
    最近更新 更多