我面临的情况是,有一些不良演员在敏感(已注销)的终端以高比例发布JSON。
除了通过IP进行速率限制之外,我还想将protect_from_forgery with: :exception
作为before_filter添加到Rails应用程序中。
该过滤器是否返回500响应或实际引发崩溃Rails进程的未捕获异常?在本地,它似乎是后者。
我担心的是,未经身份验证的僵尸程序会通过反复崩溃进程来有效地DDOS服务。
答案 0 :(得分:1)
不,应用程序中的所有未捕获的异常应由Rails(或Rack)拯救并记录,并将500错误返回给客户端。只有段错误或其他严重故障才会导致进程死亡。即使在这种情况下,一个好的网络服务器(比如Puma)也会重启这个过程。但即使Puma设法死了,你的生产环境也应该有一个进程监视器(god,monit等),如果它失败或超出内存限制,它将重启web服务器。
我很好奇你在本地的意思,它似乎[崩溃了Rails进程]"。你的rails server
命令实际上正在退出CRSF例外吗?