'忘记密码'限制

时间:2011-05-09 23:04:50

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

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

5 个答案:

答案 0 :(得分:4)

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

或者,在users表中添加TimeOfLastReset字段,并在发送电子邮件时更新此字段。如果CurrentTime-TimeOfLastReset太小,则不要发送。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

1)你必须知道你的电子邮件地址(而不仅仅是用户名)2)你可以在一个时间内只重置一次密码3)重置不能立即工作,你必须点击邮件中的链接

答案 3 :(得分:0)

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

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

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

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

答案 4 :(得分:0)

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