【问题标题】:How can I see what `Rack::Protection` is doing with Sinatra server?如何查看 `Rack::Protection` 对 Sinatra 服务器所做的工作?
【发布时间】:2018-11-27 06:10:21
【问题描述】:

我在 AWS 环境中有一个 Sinatra 服务器,客户端和服务器之间有一个负载均衡器。

除非我这样做:

disable: protection

它在重定向时给出“禁止”。我不想总是禁用保护,我应该缩小禁用保护的数量,所以我想知道是什么保护禁止我的重定向。

我希望看到类似的东西:

attack prevented by Rack::Protection::<Something>

我有:

enable: logging

和:

-e development

但无法从Rack::Protection 获得任何关于它为何应用规则的反馈。

我试过这个:

def self.log_rack_protection(namespace = nil, data = nil)
  puts "rack data: #{data.pretty_inspect}"
end
use Rack::Protection, instrumenter: log_rack_protection

但它似乎除了在启动时不会被调用。

我需要做什么才能从Rack::Protection 获得更多关于哪个模块正在阻塞的反馈?或者,我们应该对负载均衡器应用一些配置来停止这种保护吗?

【问题讨论】:

  • sidekiq 基于 Sinatra 的 Web UI 也存在类似问题。请查看this thread 是否对您有帮助。基本上,只需确保您将适当的标头从反向代理(负载平衡器)传递到机架。
  • 谢谢@31piy。基于该阅读和一些禁用“remote_referrer”保护的实验就可以了。在西纳特拉:set :protection, :except =&gt; [:remote_referrer]
  • 很高兴您自己找到了解决此问题的方法。为了帮助将来遇到类似问题的读者,您应该添加一个描述您做了什么的答案,然后接受它。
  • 其实好像是set :protection, :except =&gt; [:json_csrf]

标签: ruby sinatra rack


【解决方案1】:

虽然我没有弄清楚如何获得更好的日志记录,但我确实知道这样做:

set :protection, :except => [:json_csrf]

在问题中描述的场景中停止了客户端重定向上的“禁止”消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    • 1970-01-01
    • 2019-07-24
    • 2021-09-24
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    相关资源
    最近更新 更多