Вопросы о X-forwarded-for при наличии сквидов и CDN и браузеров - PullRequest
1 голос
/ 24 октября 2010

Я пытаюсь понять, что в действительности означает значение X-forwarded-for? По определению его значение будет иметь вид: ip1, ip2, .... ipn.

Ситуация, о которой я думаю, такова: Я вижу эти значения XFF в Squid и запросы к squid приходят из CDN. А CDN, в свою очередь, запрашивает контент от имени пользователя (браузера)

Мои конкретные вопросы:

  1. Содержит ли XFF IP-адрес браузера?
  2. Если да, то какая это часть значения XFF?
  3. Представляет ли значение XFF весь путь, пройденный запросом от браузера до окна Squid?
  4. Если нет, какую часть пути он представляет?

Я прошел определение XFF в Wiki amd Squid Doc, но мне до сих пор не ясно, что произойдет в такой ситуации.

Спасибо

1 Ответ

1 голос
/ 24 октября 2010

Как правило, каждый прокси-сервер "hop" добавляет IP-адрес клиента к X-Forwarded-For, хотя это нестандартный заголовок, поэтому все, что ниже, зависит от вашей CDN, реализующей его так же, как и все остальные:)

Несколько примеров - во-первых, браузер, подключающийся напрямую к CDN:

Browser   -> CDN     -> Squid   -> App
1.1.1.1      2.2.2.2    3.3.3.3    10.1.2.3

В этом случае приложение будет видеть X-Forwarded-For: 1.1.1.1, 2.2.2.2 . Просто - браузер - самая левая запись. Но рассмотрим случай, когда браузер находится за ISP или корпоративным прокси:

Browser      -> Proxy   -> CDN     -> Squid   -> App
192.168.0.25    4.5.6.7    2.2.2.2    3.3.3.3    10.1.2.3

В зависимости от конфигурации прокси приложение может видеть любое из:

  • X-Forwarded-For: 4.5.6.7, 2.2.2.2 (если прокси-сервер скрывает внутренний IP)
  • X-Forwarded-For: 192.168.0.25, 4.5.6.7, 2.2.2.2 (если прокси-сервер перенаправляет внутренний IP-адрес)
  • X-Forwarded-For: 9.8.7.6, 4.5.6.7, 2.2.2.2 (если прокси-сервер подделывает внутренний IP)

Как видите, вы не можете полагаться на крайнюю левую запись, содержащую полезный адрес браузера. Вместо этого начинайте справа и работайте в обратном направлении, пока не найдете адрес, который не является Squid или CDN - это будет вашим лучшим предположением по адресу браузера (а также окажется удаленным адресом, который вы увидите, если бы он был нет CDN или Squid).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...