2

电子邮件重置密码密钥到期的标准是什么?

我的应用程序生成一个 30 个字符的字母数字密钥,该密钥附加到 URL: http ://site.com/reset/keygoeshere

用户重置密码后,该密钥将从用户帐户中删除。

这个问题谈到了过期密钥,但另一位用户提到,如果电子邮件帐户被盗用,那么他们显然可以轻松请求新的重置密钥。

我想这种方法的主要潜在漏洞是有人可能会尝试暴力破解重置密钥,虽然他不知道密钥属于哪个帐户,但他仍然可以更改某人的密码。

例如,我刚刚点击了 3 天前从 Facebook 发送的重置链接,它仍然有效。

就标准做法而言,密码重置密钥是否必须到期?如果是这样,我们应该让密钥保持“新鲜”多久?

4

3 回答 3

4

不能指望您处理被盗用的用户电子邮件帐户。但是,为了防止暴力破解,需要较短的到期时间,例如 15 分钟。如果用户请求重置密码,他们通常希望现在就可以访问,如果出于某种原因他们请求密码重置链接以供以后使用,那么,搞砸他们,他们必须请求另一个。您链接的 Q 的第一条评论几乎总结了它,如果用户不喜欢您保证他们安全的事实,那就是他们的问题。

此外,您可以通过挑战问题使重置更加安全。比如“你的第一辆车是什么”。这些类型的措施是标准的,虽然通常不难找到有关用户的信息,但随机暴力破解者可能不会打扰,特别是如果他只有长达 15 分钟的时间来尝试暴力破解那个特定的重置链接。

于 2012-02-18T08:19:17.257 回答
2

几点注意事项:

  1. 到达重置 URL 时,将密钥存储在 cookie 中并立即重定向,以使其不在引荐来源网址中的任何位置。cookie 应在浏览器关闭时过期,并应在重置密码后显式删除。
  2. 我为我的服务进行了 3 小时的重置,我认为即使这样也太多了。30分钟甚至可以。
  3. 重置密码链接并非完全不安全。如果您的服务包含任何类型的信用卡数据、货币兑换或个人信息,您应该考虑还包括一些挑战问题。
于 2012-02-18T08:24:31.820 回答
0

据我了解,两者都是必要的,否则会导致很多严重的安全问题。通常对我来说,我只保留4个小时。

于 2012-02-18T08:19:15.040 回答