X-Forwarded-For— це поле заголовка HTTP, яке використовується для ідентифікації вихідної IP-адреси клієнта, який підключається до вебсервера через HTTP проксі або балансувальник навантаження.

Заголовок HTTP-запиту X-Forwarded-For був введений розробниками кешуючого проксі сервера Squid.X-Forwarded-For також є заголовком електронної пошти, який вказує на те, що повідомлення електронної пошти було з одного або кількох інших облікових записів (ймовірно, автоматично).

Без використання X-Forwarded-For або іншої подібної техніки будь-яке з’єднання через проксі-сервер розкривало б лише вихідну IP-адресу проксі-сервера, фактично перетворюючи проксі-сервер на сервіс анонімізації, таким чином, виявляти та запобігати зловживанням доступу значно складніше, ніж якби вихідна IP-адреса була доступною. Корисність X-Forwarded-For залежить від того, що проксі-сервер правдиво повідомляє про вихідну IP-адресу хоста; з цієї причини для ефективного використання X-Forwarded-For потрібно знати, які проксі-сервери є надійними, наприклад, шукати їх у білому списку серверів, адміністраторам яких можна довіряти.

Формат Загальний формат поля такий:

X-Forwarded-For: client, proxy1, proxy2

де значення — це список IP-адрес, розділених комами+пробілом, крайня ліва — вихідний клієнт, а кожен наступний проксі-сервер, який передав запит, додає IP-адресу, з якої він отримав запит. У цьому прикладі запит пройшов через proxy1, proxy2, а потім через proxy3 (не показано в заголовку). proxy3 відображається як віддалена адреса запиту.

Приклади:

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-адреса – це завжди IP-адреса, яка підключається до останнього проксі-сервера, що означає, що це найнадійніше джерело інформації. Дані X-Forwarded-For можна використовувати в сценарії прямого або зворотного проксі-сервера.

Простого реєстрації поля X-Forwarded-For не завжди достатньо, оскільки остання IP-адреса проксі-сервера в ланцюжку не міститься в полі X-Forwarded-For, вона знаходиться в фактичному заголовку IP. Для повноти вебсервер повинен реєструвати І IP-адресу джерела запиту, і інформацію поля X-Forwarded-For.

Проксі-сервери та механізми кешування Поле X-Forwarded-For підтримується більшістю проксі-серверів.

Ведення журналу X-Forwarded-For підтримується багатьма вебсерверами, включаючи Apache. IIS також може використовувати модуль HTTP для фільтрації по цьому заголовку.Winfrasoft XFF for IIS . Winfrasoft.comIIS Advanced Logging . Iis.net (2009-08-10). Retrieved on 2013-06-05.X-Forwarded-For HTTP Module For IIS7, Source Included! by Joe Pruitt Devcentral.f5.com. (2013-07-05).

Zscaler маскує заголовок X-Forwarded-For за допомогою Z-Forwarded-For, перш ніж додавати власний заголовок X-Forwarded-For, що ідентифікує вихідну IP-адресу клієнта. Це запобігає витоку внутрішніх IP-адрес із вузлів застосування Zscaler і надає стороннім постачальникам контенту справжню IP-адресу клієнта. Це призводить до несумісного з RFC запиту HTTP.

Альтернативи та варіації стандартизує заголовок HTTP Forwarded з аналогічним призначенням, але з більшими можливостями в порівнянні з заголовком HTTP X-Forwarded-For. Приклад синтаксису заголовка Forwarded:

Forwarded: for=192.0.2.60;proto=http;by=203.0.113.43

HAProxy визначає протокол PROXY, який може передавати IP-адресу вихідного клієнта без використання заголовка X-Forwarded-For або Forwarded.Willy Tarreau: The PROXY protocol . haproxy.1wt.eu. Retrieved on 2012-12-24. Цей протокол можна використовувати для кількох транспортних протоколів і він не вимагає перевірки внутрішнього протоколу, тому він не обмежується HTTP.

Див. також

Конфіденційність в Інтернеті Проксі-сервер - еквівалент SMTP Список заголовків HTTP

Примітки

Посилання

Apache mod_extract_forwarded