问题描述
我的网络应用程序有一个非常标准的功能,允许忘记密码的用户通过向自己发送密码重置电子邮件来重置密码,其中包含指向创建新密码的页面的链接。
我担心 person1 可以通过声称需要密码重置电子邮件来骚扰 person2,但提供 person2 的电子邮件地址,并使用机器人自动执行此操作,向 person2 发送大量电子邮件。它不会泄露任何秘密,但可能会非常烦人,即使是他们收件箱中的 DoS,我的应用程序也会受到指责。
我知道我可以限制发送电子邮件的 api 调用,但是如何限制?进行 api 调用的用户无法通过身份验证,因为如果他们已登录,则不需要重置。如果 api 调用是开放的,则无法验证调用者,因为任何通用请求信息(如 IP)都可能被欺骗(或通过代理服务器发送)。
如果我全局限制该 api 调用,那么如果大量合法用户碰巧同时使用该功能,则合法用户可能会被锁定。
遇到这种情况你会怎么处理?
解决方法
限制您将向同一电子邮件地址发送的邮件数量,无论它们的请求方式如何。这不需要您限制总共要处理的重置次数;仅按地址。