密码重置令牌应保持多长时间有效?

信息安全 密码 密码管理 重设密码
2021-08-16 10:03:00

密码重置令牌的推荐生命周期是多少?

太短会降低用户体验,太长会影响安全性。

Microsoft 标识默认为一天,但这很长。

2个回答

答案实际上取决于重置令牌的复杂性。目标应该是在给定的有效时间内重置令牌是不可猜测的。

因此,例如,如果您的重置令牌长度为 5 个字符,只有数字,并且您的服务器能够在没有速率限制的情况下每秒响应 100 个请求,那么 15 分钟可能太长了。想想可能的攻击:

  1. 攻击者重置自己的密码以查看链接如何工作
  2. 攻击者重置他的受害者的帐户,知道他有 n 分钟的时间
  3. 攻击者使用或多或少的随机密钥调用密码重置页面,直到找到正确的密钥。

这 - 特别是第 3 步 - 在给定的时间内应该是不可能的。这意味着如果您有足够大的宇宙来提取重置密钥(如 32 个字符、字母数字)以及应用程序中的速率限制,那么即使有一天也不会对您的安全性产生太大影响。您也可以(并且应该)选择通过第二封电子邮件/消息通知您的用户执行的密码更改。另请注意,您的应用程序可能支持非常长的重置令牌,而不会影响用户体验,因为他们永远不必键入它。

编辑:当然,您应该计算出在给定时间内只能测试很小百分比的键。例如,0.000001% 的机会在给定的时间段中猜对正确的密钥可能是可接受的风险。少量的风险是你必须以任何方式接受的。

让您的系统生成的随机代码只有一个有限的有效期也是一个好主意,比如不超过 20 分钟左右。这样,如果用户不检查他们的电子邮件并且他们的电子邮件帐户后来被盗用,如果用户从未重置他们的密码并且“重置密码”令牌被破坏,那么用于重置密码的随机令牌将不再有效被攻击者发现。

请参阅 OWASP wiki 上的“忘记密码备忘单”