通过发送加密密码

时间:2017-09-30 14:55:42

标签: php encryption passwords

对于存储带有password_hash php功能的密码的网站,我想到了以下方法来让用户重置密码,但我不知道是否会导致任何安全漏洞:

  1. 用户使用其电子邮件/用户名组合填写表单
  2. 表单检索此用户的哈希密码并通过电子邮件发送
  3. 用户使用哈希密码和新密码填写表单
  4. 数据库使用新密码更新
  5. 这似乎可以确保只有有权访问帐户所有者电子邮件的人才能更改密码

1 个答案:

答案 0 :(得分:2)

通过电子邮件发送哈希密码,可以通过电子邮件以明文形式公开。虽然强散列函数可以防止暴力破坏,但它仍然容易受到字典攻击等的影响。因此,如果攻击者拦截了电子邮件,他们就可以确定密码。

知道许多用户在不同服务之间重用密码,这一点尤为麻烦。此外,这样的电子邮件可以留在用户的手中。邮箱很长一段时间。这意味着用户成功重置密码后,安全风险可能会持续数年。

更安全的替代方法是使用一次性随机令牌(您当然需要将其存储在数据库中的某个位置),理想情况下还要及时限制:这样可以确保只有电子邮件的收件人可以重置密码避免上述风险。