Надежно получить IP веб-клиента - PullRequest
1 голос
/ 22 июля 2009

Какой самый надежный способ получения IP-адреса удаленного клиента, подключающегося к вашему сайту? Вот некоторые варианты, которые я изучил:

  • Переменные сервера (например, REMOTE_ADDR в Apache), хотя обычно это адрес прокси.
  • Java-апплет, но IE (по крайней мере тот, который я использую), похоже, отрицает это.

Единственное, о чем я думаю, это подключить клиента по HTTPS, и в этом случае прокси должен быть обойден (вообще говоря), и поэтому REMOTE_ADDR будет точным.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 22 июля 2009

HTTPS через прокси все еще возможен, если прокси не прозрачен (скажем, с клиентом в корпоративной сети). При использовании HTTPS через прокси REMOTE_ADDR по-прежнему будет адресом прокси-сервера - прокси все еще находится в пути, он только видит зашифрованный трафик.

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

1 голос
/ 22 июля 2009

Что-нибудь на стороне клиента (javascript, java) даст вам IP-адрес ПК. Это может быть внутренний IP-адрес, например 10.0.0.1.

Re: SSL + REMOTE_ADDR, большинство прокси на рабочих местах отправляют весь SSL через прокси уровня приложения, некоторые просто разрешают 443 исходящих. Любая вещь, поступающая через прокси, все равно даст вам адрес прокси, поскольку прокси все еще является компьютером, устанавливающим соединение с вашим веб-сервером.

...