Может ли X-FORWARDED-FOR содержать несколько IP-адресов

13

Может X-FORWARDED-FORсодержать несколько IP-адресов? Если так, то почему? Наглядный пример был бы великолепен.

Хасан Бэйг
источник

Ответы:

22

Да, если запрос связан через более чем один прокси-сервер, то каждый прокси-сервер должен добавить IP-адрес предыдущего к существующему заголовку X-Forwarded-For, чтобы сохранить всю цепочку.

Майк Скотт
источник
Я никогда не видел прокси, который добавляет существующее значение. Любая цитата для этого?
ceejayoz
4
Личный опыт. Я потратил много времени на анализ заголовков X-Forwarded-For, полученных большим веб-сайтом, и на самом деле довольно часто можно увидеть два или три IP-адреса в заголовке.
Майк Скотт,
4
Но также посмотрите статью в Википедии здесь: en.m.wikipedia.org/wiki/X-Forwarded-For . Он говорит, что «значение представляет собой список IP-адресов, разделенных запятыми + пробелами, крайний левый - исходный клиент, и каждый последующий прокси-сервер, прошедший запрос, добавляет IP-адрес, с которого он получил запрос».
Майк Скотт
Интересно, это один конкретный прокси-сервер? Захватывающий. По моему опыту, nginx не справляется с этим так.
ceejayoz
1
@ceejayoz, если вы используете проекты с открытым исходным кодом, такие как nginx, и пишете свой заголовок как «SET xff = clientIP», он никогда не добавится. Большинство коммерческих приборов либо Append или множество , если атрибут недоступен networkinghowtos.com/howto/...
Jacob Evans
2

С https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For

X-Forwarded-For: <client>, <proxy1>, <proxy2>

Если запрос проходит через несколько прокси, в списке указываются IP-адреса каждого последующего прокси. Это означает, что самый правый IP-адрес - это IP-адрес самого последнего прокси-сервера, а самый левый IP-адрес - это IP-адрес исходящего клиента.

Примеры:

X-Forwarded-For: 2001:db8:85a3:8d3:1319:8a2e:370:7348

X-Forwarded-For: 203.0.113.195

X-Forwarded-For: 203.0.113.195, 70.41.3.18, 150.172.238.178
Sindre
источник