`protect_from_forgery with: :exception` 是不是会崩溃?

Posted

技术标签:

【中文标题】`protect_from_forgery with: :exception` 是不是会崩溃?【英文标题】:Does `protect_from_forgery with: :exception` crash process?`protect_from_forgery with: :exception` 是否会崩溃? 【发布时间】:2016-12-31 22:17:40 【问题描述】:

我正面临这样一种情况,即有不良行为者在大规模敏感(注销)端点上发布 JSON。

除了通过 IP 进行速率限制之外,我还想将 protect_from_forgery with: :exception 作为 before_filter 添加到 Rails 应用程序中。

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

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

【问题讨论】:

【参考方案1】:

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

我很好奇您所说的“在本地,它似乎 [crash the Rails 进程]”是什么意思。您的rails server 命令实际上是在出现 CRSF 异常时退出?

【讨论】:

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

以上是关于`protect_from_forgery with: :exception` 是不是会崩溃?的主要内容,如果未能解决你的问题,请参考以下文章

在 rspec 中为 API 规范存根protect_from_forgery

Rails 4 为 API 操作跳过protect_from_forgery

Rails:如何在 Rails API 模式下实现protect_from_forgery

`protect_from_forgery with: :exception` 是不是会崩溃?

使用protect_from_forgery with: :exception 但如果会话过期则将用户重定向到登录页面

来自java的wit.ai消息api调用