0

我已经使用 password_hash($pwd, PASSWORD_BCRYPT) 创建一个散列并存储在用户表中。它将用于登录验证。

由于散列是单向函数,我的问题是我可以使用与发送给用户的激活电子邮件中的帐户验证码相同的散列。由于知道哈希不会泄露密码,它会损害安全性吗?

4

1 回答 1

0

是的,这会危及安全性,因为有权访问电子邮件帐户的攻击者(现在或在任何将来的时间点,如果电子邮件从未被删除),可以对哈希进行密码猜测攻击。

如果使用CSPRNG生成 128 位密钥更好,则可以按原样通过电子邮件发送给用户。在服务器端,您可能希望使用 SHA-2 对其进行散列存储,因为这样如果您的激活表数据被暴露,攻击者将无法激活没有有效电子邮件地址的帐户。请注意,这种强度的自动生成的密钥不需要加盐。

这种方法相当简单,并且降低了直接发送密码哈希的风险。

于 2016-05-12T13:09:31.603 回答