我使用了password_hash($ pwd,PASSWORD_BCRYPT)在用户表中创建哈希和存储。它将用于登录验证。
由于散列是一种单向函数, 我的问题是我可以使用与激活电子邮件中发送给用户的帐户验证码相同的哈希值。 它会破坏安全性,因为知道哈希不会泄露密码。
答案 0 :(得分:0)
是的,它会危及安全性,因为攻击者可以访问电子邮件帐户(无论是现在还是在任何未来的时间点,如果电子邮件永远不会被删除),都可以对哈希进行密码猜测攻击。
如果使用CSPRNG生成128位密钥会更好,可以按原样通过电子邮件发送给用户。在服务器端,您可能希望使用SHA-2对此进行哈希存储,因为如果您的激活表数据被暴露,攻击者无法激活没有有效电子邮件地址的帐户。请注意,自动生成此强度的密钥不需要盐。
这种方法非常简单,可以降低直接发送密码哈希的风险。