X-Перенаправлено-Для
HTTP |
---|
![]() |
Методы запроса |
Поля заголовка |
Коды статуса ответа |
Методы безопасного контроля доступа |
Уязвимости безопасности |
Поле X-Forwarded-For ( XFF ) HTTP-заголовка — это распространенный метод определения исходного IP-адреса клиента, подключающегося к веб-серверу через HTTP- прокси или балансировщик нагрузки .
The X-Forwarded-For
Заголовок HTTP-запроса был введен разработчиками кэширующего прокси-сервера Squid . [ нужна ссылка ]
X-Forwarded-For
также является заголовком электронной почты , указывающим, что сообщение электронной почты было перенаправлено с одной или нескольких других учетных записей (вероятно, автоматически). [1]
Без использования XFF или другого подобного метода любое соединение через прокси раскрывало бы только исходный IP-адрес прокси-сервера, фактически превращая прокси-сервер в анонимизирующую службу , что значительно затрудняло бы обнаружение и предотвращение неправомерного доступа, чем если бы исходный IP-адрес был доступен. Полезность XFF зависит от того, правдиво ли прокси-сервер сообщает IP-адрес исходного хоста; по этой причине эффективное использование XFF требует знания того, какие прокси заслуживают доверия, например, путем поиска их в белом списке серверов, сопровождающим которых можно доверять.
Формат
[ редактировать ]Общий формат поля: [2]
X-Forwarded-For: client, proxy1, proxy2
где значение представляет собой список IP-адресов, разделенных запятыми + пробелами, крайний левый — исходный клиент, а каждый последующий прокси-сервер, передавший запрос, добавляет IP-адрес, от которого он получил запрос. В этом примере запрос прошел через proxy1 , proxy2 , а затем через proxy3 (не показано в заголовке). proxy3 отображается как удаленный адрес запроса.
Примеры: [3]
X-Forwarded-For: 203.0.113.195, 70.41.3.18, 150.172.238.178 X-Forwarded-For: 203.0.113.195 X-Forwarded-For: 2001:db8:85a3:8d3:1319:8a2e:370:7348
Поскольку заголовок X-Forwarded-For формально не стандартизирован, существуют некоторые варианты формата IP-адреса. Например, некоторые реализации [ который? ] включите номер порта клиентов или заключите адреса IPv6 в квадратные скобки, даже без номера порта, аналогично формату в более новой версии. Forwarded
заголовок. Примеры:
X-Forwarded-For: 203.0.113.195:41237, 198.51.100.100:38523 X-Forwarded-For: [2001:db8::1a2b:3c4d]:41237, 198.51.100.100:26321 X-Forwarded-For: [2001:db8::aa:bb]
Использование
[ редактировать ]Заголовок X-Forwarded-For добавляется или редактируется HTTP- прокси при пересылке запроса. Сервер добавляет адрес клиента к существующему заголовку X-Forwarded-For, разделенному запятой, или создает новый заголовок X-Forwarded-For с адресом клиента в качестве значения.
Поскольку поле X-Forwarded-For легко подделать, данную информацию следует использовать с осторожностью. Крайний правый IP-адрес всегда является IP-адресом, который подключается к последнему прокси-серверу, что означает, что это наиболее надежный источник информации. Данные X-Forwarded-For можно использовать в сценарии прямого или обратного прокси. Если сервер находится за доверенным обратным прокси-сервером и разрешает соединения только с этого прокси, значение заголовка обычно можно считать заслуживающим доверия.
Простой регистрации поля X-Forwarded-For не всегда достаточно, поскольку последний IP-адрес прокси-сервера в цепочке не содержится в поле X-Forwarded-For, он находится в фактическом IP-заголовке. Веб-сервер должен регистрировать как IP-адрес источника запроса, так и информацию поля X-Forwarded-For для полноты.
Альтернативы и вариации
[ редактировать ]RFC 7239 стандартизировал Forwarded
HTTP-заголовок с аналогичной целью, но с большим количеством функций по сравнению с X-Forwarded-For
HTTP-заголовок. [4] Пример Forwarded
синтаксис заголовка:
Forwarded: for=192.0.2.60;proto=http;by=203.0.113.43 Forwarded: for="[2001:db8::1234]"
HAProxy определяет протокол PROXY, который может передавать IP-адрес исходного клиента без использования X-Forwarded-For
или Forwarded
заголовок. [5] Этот протокол может использоваться с несколькими транспортными протоколами и не требует проверки внутреннего протокола, поэтому он не ограничивается HTTP.
См. также
[ редактировать ]- Конфиденциальность в Интернете
- Список прокси-программ
- X-Originating-IP для SMTP эквивалента
- Список полей заголовка HTTP
Ссылки
[ редактировать ]- ^ «Обзор анализируемых заголовков почты» . Архивировано из оригинала 20 сентября 2014 г. Проверено 5 мая 2014 г.
- ^ «squid: Follow_x_forwarded_for директива конфигурации» . Squid-cache.org . Проверено 12 ноября 2017 г.
- ^ «X-Перенаправлено-Для» . Веб-документы MDN . Проверено 6 ноября 2020 г.
- ^ Петерссон, А; Нильссон, М. (июнь 2014 г.). Пересылаемое расширение HTTP . IETF . дои : 10.17487/RFC7239 . РФК 7239 . Проверено 20 февраля 2020 г.
- ^ Вилли Тарро: Протокол ПРОКСИ . haproxy.1wt.eu. Проверено 24 декабря 2012 г.
Внешние ссылки
[ редактировать ]- Apache mod_extract_forwarded