一次性密码重新发送功能的拒绝服务攻击

时间:2019-07-18 06:54:28

标签: security brute-force owasp denial-of-service web-application-firewall

在我们的Web应用程序中,我们具有用户重置密码的功能。该过程的一部分要求通过SMS发送OTP。事实是,我们在页面中有一个功能,允许用户重新发送OTP,以防由于某些原因(SMS提供程序错误,网络错误等)未收到OTP。在最近的渗透测试中,发现发送OTP的后端呼叫很容易受到DoS攻击。黑客可以运行它来用SMS充斥用户。

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

让我们说黑客做了一个程序,可以每秒通过短信重新发送otp,防火墙将无法检测到它。我们可以做的另一种选择是以编程方式处理它,但是我们没有想到最佳方法。有人可以建议我们吗?我们不能仅仅限制重新发送OTP的次数,因为我们担心它会影响用户体验。

3 个答案:

答案 0 :(得分:1)

您是否查看了实际用例中的时间安排?

例如,如果真实用户在按下retry之前花费了20秒,那么您可以将该限制添加到您的服务中,而无需真实用户知道该限制已经到位。 这并不意味着您不能在此之前接受另一个请求,它可以只是排队直到超时结束为止。

答案 1 :(得分:1)

我想到两件事:

采用Macuistin的想法,但是超时会随着时间而增长。我知道我不想每分钟发送3条短信。 X后,不再发送邮件,请联系支持部门。如果这是合法用户,那么在发送了如此多的消息后,有些不对劲,您应该停止操作。

如何在此之前添加一个步骤,使用一次性链接将链接发送到用户的电子邮件地址,单击链接会将其发送到页面以输入在链接上触发的OTP(也可能是那里的重新发送链接,不会触发另一封电子邮件。

答案 2 :(得分:0)

这无法通过WAF进行,在这里您可以使用 Captcha 进行失败的尝试。 验证码仅在特定限制越过时弹出。您可以设置IP,UserID和会话变量的限制。