Nodejs在短时间内多次访问

问题描述 投票:-1回答:2

在短时间内有很多访问权限。

Express应该做什么?

我想禁止连续访问。

Many accesses in a short time

javascript node.js express security rate-limiting
2个回答
0
投票

您的要求被称为速率限制。实现起来可能非常复杂,也可能非常简单。使用express-rate-limit取得了成功。它是表示中间件的简单中间件。

类似这样将每个IP地址限制为每分钟100个请求。

const RateLimit = require( 'express-rate-limit' )
var limiter = new RateLimit(
  {
    windowMs: 1000 * 60,
    max: 100,
    headers: true,
    onLimitReached: function( req, res, options ) {
      console.log( 'Request rate limited for requests from ', req.ip )
    }
  } )
app.use( limiter )

但是对于商业设置而言,这太简单了,在商业设置中,您出售对API的访问权,并为高级客户提供了更高的限额。正如我提到的那样,设置起来很复杂。


0
投票

在较高级别上,您需要为每个IP地址或user_id维护上次访问时间(或X次上次访问时间)的字典缓存。

然后,您将需要在每个页面请求周围使用包装函数,以更新上次访问时间,并检查它们是否在使用限制内。返回HTTP 429 - Too Many Requests或调用破折号_.throttle()_.debounce()函数。

但是,由于您不是第一个遇到此问题的人,因此事实证明有一个针对此问题的预写即插即用库:

© www.soinside.com 2019 - 2024. All rights reserved.