我的web应用程序有一个非常标准的功能,允许忘记密码的用户通过向自己发送一封带有页面链接的密码重置电子邮件来重置密码,以创建新密码。
我担心第1个人可能会使用此页面骚扰第2个人,声称需要重置密码的电子邮件,但提供第2个人的电子邮件地址,并使用机器人自动执行,向第2个人发送大量电子邮件。它不会泄露任何秘密,但可能会非常烦人,甚至是收件箱中的DoS,我的应用程序也会受到指责。
我知道我可以抑制发送电子邮件的api调用,但怎么做呢?进行api调用的用户无法进行身份验证,因为如果他们登录了,就不需要重置。如果api调用是打开的,那么就无法验证调用方,因为任何一般的请求信息(如IP(都可能被欺骗(或通过代理服务器发送(。
如果我在全局范围内限制该api调用,那么如果大量合法用户碰巧同时使用该功能,他们可能会被锁定。
你是如何处理这种情况的?
限制将向同一电子邮件地址发送的邮件数量,无论请求方式如何。这不需要你限制你总共要处理多少重置;只是每个地址。