【问题标题】:'Forgot Password' throttling“忘记密码”限制
【发布时间】:2011-08-22 01:22:51
【问题描述】:

我设置了一个“忘记密码”系统,该系统会向用户发送一封带有重置链接的电子邮件。 M 问题是:我怎样才能防止滥用这个系统?我如何确保人们不会使用它向人们的收件箱发送垃圾邮件,但仍然可以为需要它的人使用它?

【问题讨论】:

  • 你在编程网站上问一个哲学问题。由您决定如何避免这种情况。最明显的做法是在一段时间内禁止一个 IP 来自多个请求。
  • 正如乔所说,这可能比programmers.stackexchange.com更好。

标签: php throttling forgot-password denial-of-service


【解决方案1】:

询问注册的电子邮件地址而不是用户名?恶意用户不太可能知道它。

或者,在您的用户表中有一个 TimeOfLastReset 字段,并在您发送电子邮件时更新此字段。如果 CurrentTime-TimeOfLastReset 太小,则不要发送。

【讨论】:

    【解决方案2】:

    发送恢复电子邮件时,请记录其发生的时间。如果在预设的时间间隔(15 分钟?6 小时?一天?)内有任何进一步/过多的恢复请求,请打印一条消息并且不要发送电子邮件。

    【讨论】:

    • 这样的消息:请至少等待 15 分钟让电子邮件到达,并确保检查您的垃圾邮箱。如果您的邮件提供商最近没有收到我们的邮件,则递送可能需要 30 分钟。
    【解决方案3】:

    1) 您必须知道您的电子邮件地址(不仅仅是用户名) 2) 您只能在一段时间内重置密码一次 3) 重置不能立即生效,您必须点击邮件中的链接

    【讨论】:

      【解决方案4】:

      不要认为它真的有可能被垃圾邮件发送者滥用。

      对于垃圾邮件发送者来说,发送给用户的自动消息(具有固定内容)是无用的。

      但是,您可以将会话 ID 添加到隐藏字段并在提交时检查它。 或者在表单中添加一个带有 name="message" 和空值的隐藏 (disply: none) 字段。并检查表单提交时是否仍为空。

      让用户填写他们的用户名和电子邮件地址并进行验证。

      【讨论】:

        【解决方案5】:

        如果您使用电子邮件作为登录用户名,这应该不是什么大问题,因为不是每个人都知道他们的电子邮件,而且为了让他们能够重置,他们的电子邮件必须与数据库。因此,只有在有人输入有效的电子邮件时才会发送和重置。

        【讨论】:

          猜你喜欢
          • 2012-07-25
          • 2012-12-20
          • 2013-05-17
          • 2011-08-26
          • 2015-12-31
          • 1970-01-01
          • 1970-01-01
          • 2016-02-14
          • 2012-07-15
          相关资源
          最近更新 更多