【问题标题】:Expire reset password email key过期重置密码电子邮件密钥
【发布时间】:2012-03-09 12:40:57
【问题描述】:

关于通过电子邮件发送的重置密码密钥到期的标准是什么?

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

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

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

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

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

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

【问题讨论】:

    标签: php password-recovery


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      几点说明:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2017-01-25
          • 2010-11-21
          • 1970-01-01
          • 2017-02-26
          • 1970-01-01
          • 2018-05-24
          • 2017-08-30
          • 2015-11-26
          • 2020-02-15
          相关资源
          最近更新 更多