2016-08-24 74 views
0

我正面临一个场景,那里有不良行为者在高级敏感(注销)端点上发布JSON。``protect_from_forgery::exception` crash process?

除IP限速外,我还想将protect_from_forgery with: :exception作为before_filter添加到Rails应用中。

该过滤器是否会返回500响应或实际引发一个会导致Rails进程崩溃的未捕获异常?在本地,它似乎是后者。

我担心的是,未经身份验证的机器人会通过重复崩溃进程来有效地DDOS服务。

回答

1

不,应用程序中的所有未捕获的异常应该由Rails(或Rack)救起并记录下来,并将500错误返回给客户端。只有段故障或其他严重故障才会导致进程死亡。即使在这种情况下,一个好的网络服务器(比如Puma)也会重启这个过程。但是如果Puma管理死亡,你的生产环境应该有一个进程监视器(god,monit等),如果它失败或者超出内存界限,它将重启Web服务器。

我很好奇你的意思是“本地,它似乎[崩溃的Rails过程]”。您的命令rails server实际上是以CRSF异常退出?

+0

脑屁。我是Ruby的新手,并没有意识到过多的堆栈跟踪不是崩溃+观察重新启动。你绝对正确。 – Ben