【发布时间】:2015-03-12 03:06:43
【问题描述】:
我的 Rails 4 应用程序出现以下错误:
ActionDispatch::RemoteIp::IpSpoofAttackError: IP 欺骗攻击?! HTTP_CLIENT_IP="xx.xx.xx.xx" HTTP_X_FORWARDED_FOR="xx.xx.xx.xx"
我们不需要这种类型的安全检查,所以在谷歌搜索后我发现了这个:
https://github.com/rails/rails/issues/10780
当中间代理插入用户 IP 地址时 HTTP_CLIENT_IP 和 HTTP_X_FORWARDED_FOR,这个地址是 私有的,ActionDispatch::RemoteIp 引发 IpSpoofAttackError 例外。
当企业代理在标头中包含用户的 IP 地址时, 这通常是私有的。删除私有 IP 地址 HTTP_X_FORWARDED_FOR 中包含的链可能应该只完成 当地址与在中找到的地址不完全匹配时 HTTP_CLIENT_IP。如果匹配,那应该是用户的IP 地址。
例如在以下环境中会发生这种情况:
HTTP_CLIENT_IP:172.17.19.51 HTTP_X_BLUECOAT_VIA:ffffffffffffffff HTTP_X_FORWARDED_FOR:172.17.19.51 REMOTE_ADDR:xxx.xxx.xxx.xxx(这个 将是一个公共 IP 地址)
此处提供的修复:
作为一种解决方法,我在 config/application.rb 中禁用了此检查:
config.action_dispatch.ip_spoofing_check = false
但这似乎在 Rails 4 中不起作用。新调用是什么?如何在站点范围内设置它?
【问题讨论】: