通过延迟和退避来保护节点/表达端点免受攻击

时间:2019-03-13 08:38:02

标签: node.js express

我想保护某些端点免遭黑客攻击以及DoS / DDoS攻击,例如登录,重置密码,注册。

我想实现具有线性或指数补偿(不限制)的延迟(即r):

  • 请求1:没有延迟
  • 请求2:1000ms
  • 请求3:1000ms + x
  • 请求4:1000ms + x + y
  • ...

我之前已经做过,但是没有在节点上做过。

我意识到,由于节点中没有线程池,攻击者无法通过启动1000个并发请求来饿死我的线程池。

但是,每个请求都会导致分配少量的内存。因此,攻击者可能发起1000个并发请求,并耗尽我服务器的内存。

我的理解正确吗?是否有一种优雅的方式来处理此问题,或者它是不可避免的(所以我应该接受它,或者考虑使用诸如节流的替代方法)?

2 个答案:

答案 0 :(得分:2)

在应用程序级别添加DDoS安全性是不好的做法。这应该由先前的层来实现,例如。 WAF / Cloudflare。

当您提供大量数据时,节流非常有用。对于HTML内容,很难将其视为真正的安全性。最好限制同时连接的数量,例如在nginx中。

仅最后,您可以在应用程序中实施限制。 这不应该拖延。您的目标是尽快处理该请求。因此,引入了某种形式的速率限制( HTTP 429请求太多

答案 1 :(得分:1)

最好在Web服务器代理/平衡器级别上防御DDoS。

可以使用rate-limiter-flexible来保护暴力破解,这里是login protection examplean article with more examples