我面临这样一种情况,即有不良行为者在敏感(注销)端点上大规模发布 JSON。
除了通过 IP 进行速率限制之外,我还想protect_from_forgery with: :exception
在 Rails 应用程序中添加一个 before_filter。
该过滤器是否返回 500 响应或实际上引发了导致 Rails 进程崩溃的未捕获异常?在本地,它似乎是后者。
我担心的是未经身份验证的机器人会通过反复崩溃进程来有效地 DDOS 服务。
我面临这样一种情况,即有不良行为者在敏感(注销)端点上大规模发布 JSON。
除了通过 IP 进行速率限制之外,我还想protect_from_forgery with: :exception
在 Rails 应用程序中添加一个 before_filter。
该过滤器是否返回 500 响应或实际上引发了导致 Rails 进程崩溃的未捕获异常?在本地,它似乎是后者。
我担心的是未经身份验证的机器人会通过反复崩溃进程来有效地 DDOS 服务。
不,您的应用程序中所有未捕获的异常都应该由 Rails(或 Rack)拯救并记录下来,并向客户端返回 500 错误。只有段错误或其他严重故障会导致进程终止。即使在这种情况下,一个好的网络服务器(比如 Puma)也会重新启动这个过程。但是,即使 Puma 死机了,您的生产环境也应该有一个进程监视器(god、monit 等),如果 Web 服务器失败或超出内存限制,它将重新启动 Web 服务器。
我很好奇您所说的“在本地,它似乎 [crash the Rails process]”是什么意思。您的命令rails server
实际上是在 CRSF 异常时退出?