Я получаю следующую ошибку в своем приложении Rails 4:
ActionDispatch::RemoteIp::IpSpoofAttackError: Атака с подменой IP?! HTTP_CLIENT_IP=xx.xx.xx.xx HTTP_X_FORWARDED_FOR=xx.xx.xx.xx
Нам не нужен этот тип проверки безопасности, поэтому после некоторого поиска в Google я нашел это:
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 = ложь
Однако это, похоже, не работает в Rails 4. Что такое новый вызов и как мне установить его на весь сайт?