密码重置哈希的有效期应该是多久?

Posted

技术标签:

【中文标题】密码重置哈希的有效期应该是多久?【英文标题】:How long should a password reset hash be valid for? 【发布时间】:2013-07-24 16:10:57 【问题描述】:

这是场景:

黑客劫持了我网站上用户的帐户。黑客更改密码。我的网站向用户的联系人电子邮件地址发送一封电子邮件,其中包含一个链接,其中包含一个带有哈希值的 URL,用于重置密码。然后,黑客在第二天更改了用户的联系电子邮件地址。然后,我的网站会向新旧电子邮件地址发送一封电子邮件。

这里的大多数答案都说恢复哈希应该在一个小时内有效。但是,如果用户不在家并且直到哈希过期一周后才收到电子邮件怎么办?用户的密码已更改,也无法收到新的辅助邮箱。用户现在已经丢失了帐户并且无法恢复它。哈希不应该在一两个星期内保持有效,还是直到它被使用?

如果黑客知道这种机制在大多数网站上的工作原理,声称忘记了密码并请求新密码,会发生什么情况。站点是否应该生成一个新的哈希来替换旧的哈希,从而使真实用户的重置哈希无效?还是该站点不应该更改散列,并再次发送相同的散列?但是现在,真实用户和黑客都有哈希来重置密码?

我很困惑......也许这个问题没有完美的解决方案......

还有其他技术吗?我个人不喜欢“秘密问题”,因为它们通常会提供一个后门来侵入某人的帐户。当网站需要我提供它们时,我会输入 gibberish 作为答案。

顺便说一句,我知道有类似的问题,我更愿意在对现有问题的评论中要求澄清而不是提出一个新问题,但我没有足够高的声誉来为其他人的问题添加评论。

【问题讨论】:

【参考方案1】:

我会设置哈希值直到被激活并完成验证,因为黑客可以使用机器人进入网站。

编辑:黑客将不知道重置验证的秘密密码。

【讨论】:

我已经实现了验证码之类的东西(既可以注册,也可以重置密码),但没有那么烦人。我不想通过在我的问题中谈论验证码来掩盖这个问题。所以谢谢,但这不是目前的问题。现在,我更关心事件的顺序,以防止人类攻击者将真实用户锁定在其帐户之外,同时不让真实用户失去恢复其帐户的能力。跨度>

以上是关于密码重置哈希的有效期应该是多久?的主要内容,如果未能解决你的问题,请参考以下文章

为啥要存储持久登录 cookie 和密码重置令牌的哈希?

重置 ASP.NET 密码 - 安全问题?

openwrt系统重置后怎么登录

如何实施密码重置?

如何实施密码重置?

为啥我们应该让帐户激活/密码重置链接在一段时间后过期?