2016-07-14 63 views
1

我在node.js中构建了一个应用程序,允许用户使用express和busboy上载文档。用户可以在一次上传中上传多个文档,但总数限制为20MB。node.js限制来自用户的请求数

是否可以阻止用户在给定的时间内发出多个上传请求?我担心的是,有人可以轻松编写一个脚本来上传20mb(每次上传的限制),并且每分钟重复这个100x或一些大数量。如果用户只能每30秒或每分钟上传一次,这将是理想的选择。

+1

我相信你最终想要某种[速率限制](https://en.wikipedia.org/wiki/Rate_limiting)... –

回答

0

你可以通过很多方式实现这一点,但我认为对我来说最有意义的方法是每个用户都有一个总的上传限制,或者某种类型的日期字段指示特定用户何时可以上传一组新文件。

如果你可以提供一些关于你的堆栈的更多细节,我可能会帮助你敲出一些代码。

0

您可以使用中间件来检查它

  1. app.use('/upload', upload-middleware, req-res-func)
  2. upload-middleware接收req,由饼干/会话ID /等,并保存上次上载时间计算的用户。如果当前请求时间和预置时间匹配,则调用next()将请求转发到请求分配函数,否则请拨打next(new Error('Upload error...'))