egg-ratelimiter icon indicating copy to clipboard operation
egg-ratelimiter copied to clipboard

路径判断不要写 indexOf 判断

Open everlose opened this issue 3 years ago • 5 comments

config.ratelimiter = {
  router: [
    {
      path: '/fe/product',
      max: 1,
      time: '1s',
      message: '访问频率过高',
    },
    {
      path: '/fe/article/:aid',
      max: 1,
      time: '1s',
      message: '访问频率过高',
    },
  ],
};

上述代码访问 /fe/product 路径能生效,而 '/fe/article/JHASU1234' 无效。

我检查代码应该是路径判断惹起的

opts.router[actionKeys.indexOf(ctx.url)]

这点期望能和 router 使用一样的规则。

everlose avatar Mar 21 '21 14:03 everlose

还有一个漏洞,redis 存放的是

id: `${id}:${ctx.url}`

模拟 curl 请求路径后的参数每次都填不一样的,就绕过了你的限制。

everlose avatar Mar 21 '21 14:03 everlose

我也发这个问题了,没发匹配带参数的路由,

rfw avatar Apr 04 '21 09:04 rfw

这个版本确实只支持绝对路径,现在项目在用midway,我抽时间做个midway速率限制器组件,顺便路由路径匹配做一下,egg-ratelimiter到时也加进去

ZQun avatar Apr 04 '21 09:04 ZQun

这个版本确实只支持绝对路径,现在项目在用midway,我抽时间做个midway速率限制器组件,顺便路由路径匹配做一下,egg-ratelimiter到时也加进去

感觉最大的问题还是

id: `${id}:${ctx.url}`

容易被绕过去...这是一个比较致命的漏洞。还是改用 path 替代 url 吧。。

everlose avatar Apr 25 '21 03:04 everlose

get请求带参数基本就用不了了

leochen-g avatar Oct 08 '21 09:10 leochen-g