Security 针对一次性密码重发功能的拒绝服务攻击

Security 针对一次性密码重发功能的拒绝服务攻击,security,brute-force,owasp,denial-of-service,web-application-firewall,Security,Brute Force,Owasp,Denial Of Service,Web Application Firewall,在我们的web应用程序中,我们有一个功能,用户可以重置其密码。部分流程需要通过SMS发送OTP。问题是,我们的页面中有一个功能,允许用户在由于某些原因(短信提供商错误、网络错误等)而未收到OTP时重新发送OTP。根据最近的渗透测试,发现发送OTP的后端调用容易受到DoS攻击。黑客可以通过它向用户发送短信 我们的防火墙中已经有一种机制,可以检测拒绝服务的自动攻击。问题是,防火墙将其归类为攻击时,每秒的请求数有一个最低限制。(例如,每秒100个请求,FW会阻止它,但允许任何低于此速度的请求) 假设黑

在我们的web应用程序中,我们有一个功能,用户可以重置其密码。部分流程需要通过SMS发送OTP。问题是,我们的页面中有一个功能,允许用户在由于某些原因(短信提供商错误、网络错误等)而未收到OTP时重新发送OTP。根据最近的渗透测试,发现发送OTP的后端调用容易受到DoS攻击。黑客可以通过它向用户发送短信

我们的防火墙中已经有一种机制,可以检测拒绝服务的自动攻击。问题是,防火墙将其归类为攻击时,每秒的请求数有一个最低限制。(例如,每秒100个请求,FW会阻止它,但允许任何低于此速度的请求)


假设黑客做了一个程序,每秒通过短信重新发送otp,防火墙将无法检测到它。我们可以做的另一个选择是通过编程来处理它,但我们想不出最好的方法。有人能给我们提供这方面的建议吗?我们不能仅仅限制OTP可以被重新发送的次数,因为我们担心它对用户体验的影响。

你看过真实世界用例中的时间安排了吗

例如,如果实际用户在按“重试”之前需要20秒,那么您可以在实际用户不知道该限制已存在的情况下将该限制添加到您的服务中。
这并不意味着在此之前您不能接受另一个请求,它可以排队等待,直到超时时间过去。

我想到两件事:

接受Macuistin的想法,但让超时时间随着时间的推移而增长。我知道我不想一分钟发三条短信。X之后,将不再发送大量消息,并让他们与支持部门联系。如果这是一个合法的用户,那么在发送了这么多消息之后,有些事情是不对的,你应该停止


在这之前添加一个步骤如何,通过一次性链接发送一个链接到用户的电子邮件地址,单击该链接会将他们发送到页面,以进入在链接上触发的OTP(可能还有一个重新发送链接,不会触发另一封电子邮件)。

这将无法通过WAF实现,在这里,您可以对失败的尝试使用验证码。 验证码仅在特定限制交叉时弹出。您可以设置IP、用户ID和会话变量的限制