不会过期的密码重置链接是否存在安全风险?

信息安全 密码
2021-09-03 07:48:21

我目前正在研究密码重置流程。我们决定将密码重置链接通过电子邮件发送到用户的注册电子邮件,并允许他们遵循该链接并输入他们选择的新密码。

我们想到的当前实现提供了一次性使用令牌,但没有超时功能。目前,我对此事所做的研究似乎表明,让这些令牌过期在某种程度上比不过期更安全。然而,人们并没有说明为什么会这样。

有人可以提供一个用例,其中该令牌(虽然仍然是一次性使用)不会过期将是有害的安全明智的?

其他详细信息: 我很清楚发送密码重置链接不是处理此问题的最安全方法。理想情况下,我们不希望将这种安全性混淆给电子邮件提供商。但是,我们已决定使用密码重置链接。我们只是想确定我们是否希望它过期。有关此事的更多信息:

http://www.fishnetsecurity.com/sites/default/files/media/10WP0003_BestPractices_SecureForgotPassword%5B1%5D_0.pdf

4个回答

例如:如果我记得我的密码,请不要重置它。

现在,如果我的电子邮件帐户后来被盗用(或者如果我访问该链接并且任何人决定仔细阅读我的浏览历史记录),他们可以随意更改我的密码,除了更改我自己的密码之外,我无法阻止它。

当然,除非您的意思是该令牌仅适用于一页访问。这当然是安全的,但如果我关闭页面、会话过期等也会带来不便。

除了其他答案中提到的场景之外,我可以看到密码重置链接过期的主要原因是该链接可能会被缓存或存储在多个位置,并且可能(在某些情况下)允许其他人访问用户帐户。

  • 浏览器历史。这似乎很可能是一种风险。用户从共享 PC 重置密码,我希望该链接进入浏览器历史记录,因此任何可以访问该浏览器的人都可以重置用户密码并控制该帐户。
  • 由代理服务器缓存。显然,如果您有 HTTPS,那么大多数代理将看不到链接,但是在许多公司中,使用 SSL 拦截,因此这些代理将缓存链接,而且 IIRC 一些移动运营商以节省成本的名义做这种事情。
  • 添加到收藏夹。用户点击链接,认为“这很方便”将其添加到收藏夹,现在使用该浏览器的任何人都可以访问他们的帐户。不是特别可能,但可能。

这些场景对您是否重要将取决于您的用例和您希望提供的安全级别。

这是正确的。使这些令牌过期更加安全,因为有权访问您的数据库的攻击者将能够获取这些令牌并使用它们来重置请求密码重置但未完成其请求的用户。

我还应该提到:将密码重置令牌视为密码一样大的秘密。也就是说,您不以纯文本形式存储它们,而是生成它们,将它们发送给用户,并将其存储在您的数据库中。这也可以防止具有读取权限的攻击者仅读取和滥用令牌。

OWASP 有一个很好的密码重置备忘单,他们关于有限有效期的论点就像@Jonathan Newmuis 所说:

[...] 如果用户不检查他们的电子邮件并且他们的电子邮件帐户后来被盗用,如果用户从未重置他们的密码并且“重置密码”用于重置密码的随机令牌将不再有效" 令牌被攻击者发现。当然,无论如何,一旦用户的密码被重置,随机生成的令牌应该不再有效。