Получить реальный IP-адрес клиента на Heroku
На Heroku Cedar я хотел получить клиентас IP. Первая попытка:
ENV['REMOTE_ADDR']
Конечно, это не работает, потому что все запросы передаются через прокси. Таким образом, альтернативой было использовать:
ENV['HTTP_X_FORWARDED_FOR']
Но это не совсем безопасно, не так ли?
Если он содержит только одно значение, я беру это. Если он содержит более одного значения (через запятую), я мог бы взять первое.
Но что, если кто-то манипулирует этим значением? Я не могу доверятьENV['HTTP_X_FORWARDED_FOR']
как я мог сENV['REMOTE_ADDR']
, И нет списка доверенных прокси, которые я мог бы использовать.
Но должно бытькаким-то образом надежно завладеть клиентомс IP-адресом всегда. Вы знаете один?
Вих документыГероку описывает этоX-Forwarded-For
является "исходный IP-адрес клиента, подключающегося к маршрутизатору Heroku ".
Это звучит так, как будто Heroku может перезаписатьX-Forwarded-For
с исходящим удаленным IP. Это предотвратит подделку, верно? Может кто-нибудь это проверить?