0

我正在尝试解决我的应用程序中的缓慢发布漏洞问题。

问题:https ://blog.quallys.com/securitylabs/2011/07/07/identifying-slow-http-attack-vulnerabilities-on-web-applications

为了限制来自用户的连接数,我使用了 express-rate-limit 以使应用程序不会变得不可用。

const rateLimit = require('express-rate-limit')

const limiter = rateLimit({   windowMs: 60 * 1000, // 1 minute   max: 100 // limit each IP to 100 requests per windowMs })

app.use(limiter)

但是,如果我尝试使用 slowtesttool 测试我的应用程序并使用 2 个连接运行测试(每秒连接 1 个,每 10 秒跟踪一次数据),我看到连接永远不会关闭。 永久打开 2 个连接的测试运行结果


我已经为连接设置了超时,如下所示,但它似乎不起作用!

app.use((req, res, next) => {
  req.connection.setTimeout(30000, () => {
    req.socket.end()
  })
  next()
})

有没有办法可以限制接受数据的速率,即指定我可以等待每个下一个正文块的最长时间?

4

1 回答 1

0

一种解决方案可能是使用您的前端网络服务器的容量(我假设您将在服务器后面公开您的应用程序,例如 nginx、apapche、caddy ......)。

Nginxcaddy有这个内置它,其他人可能也有。

于 2020-06-25T17:41:39.440 回答