在我们的 Web 应用程序中,我们有一个功能可以让用户重置他/她的密码。部分流程需要通过 SMS 发送 OTP。问题是,我们的页面中有一个功能,允许用户重新发送 OTP,以防由于某些原因(短信提供商错误、网络错误等)而没有收到它。在最近的渗透测试中,发现发送 OTP 的后端调用容易受到 DoS 攻击。黑客可以运行它来向用户发送短信。
我们的防火墙中已经有一种机制,可以检测拒绝服务的自动攻击。问题是,防火墙将其归类为攻击有每秒请求的最小限制。(例如每秒 100 个请求,FW 会阻止它,但任何低于它的请求都允许)。
假设黑客做了一个程序以每秒通过短信重新发送 otp,防火墙将无法检测到它。我们可以做的另一个选择是以编程方式处理它,但我们想不出最好的方法来做到这一点。任何人都可以在这方面给我们建议吗?我们不能仅仅限制 OTP 可以重新发送的次数,因为我们担心它对用户体验的影响。