rocketchat 防爆破 及 报错 Error, too many requests. Please slow down. You must wait 60 seconds before trying again

背景

用docker部署了一个rocketchat服务,跑了两年了

一直有一个问题:在登陆页面可以无限连刷,这怎么行?外网的服务很容易就被爆破了,

在管理页面有个 Rate Limiter 的配置项,可以限制请求频率,可是频率无论调到多小都不生效。

issue 找了下确实有人问这个问题,然而并没有解决方案

今天20120106想到这个问题,尝试更新下看看是不是已经解决了

更新方法

 

 


 

 

docker pull rocketchat/rocket.chat:latest
docker-compose stop rocketchat
docker-compose rm rocketchat
docker-compose up -d rocketchat

问题

然后登陆rocketchat, 报错 Error, too many requests. Please slow down. You must wait 60 seconds before trying again

???这是修复好了,但自己被限制在系统外了,当初设置的请求频率很小😱😱😱

再去issue找下,没找到解决方案。。。

只能自己想办法把limiter disable了

把源代码下载下来看谁报的错

meteor/ddp-rate-limiter

 

进入docker实例看到了部署方式

 

 

 这样的话,,只要把部署的代码

            if (rateLimitResult.allowed) {
                return fn.apply(null, args);
            }

中的ateLimitResult.allowed替换成true就可以实现关闭限制的效果了

先把部署容器里的/app备份出来

docker cp rocketchat_rocketchat_1:/app /bk/

然后把代码中的判断全部替换掉

sed -i 's/rateLimitResult.allowed/true/g' `grep 'rateLimitResult.allowed' /bk/app/* -rl`

接着更改docker-compose.yml用我们改过的代码启动

 重新启动应用

docker-compose stop
docker-compose up -d

现在登陆后台页面就没有报错了,进入管理页面的Rate Limiter 配置,直接使用默认的先

 

 保存好了,再把我们的docker-compose.yml改回来去掉 - /bk/app:/app 这个挂载配置

重新启动就好了,如果后面又把自己封在外面就再操作一次。

 

而现在你再想着从登陆页爆破也不可能了😀😀😀

 

 

 

disable ddp rate limiter

 

posted @ 2021-01-06 12:56  timseng  阅读(1815)  评论(0)    收藏  举报