可靠地获得Web客户端IP

时间:2009-07-22 04:32:49

标签: networking ip-address

获取连接到您网站的远程客户端的IP地址的最可靠方法是什么?我研究过的一些选项是:

  • 服务器变量(例如Apache中的REMOTE_ADDR),尽管这通常是代理地址。
  • 一个Java小程序,但IE(至少我正在使用的那个)似乎否认它。

我正在考虑的另一件事是让客户端通过HTTPS连接,在这种情况下应该绕过代理(一般来说),因此REMOTE_ADDR会准确。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

任何客户端(javascript,java)都会为您提供PC的IP地址。这可能是内部IP地址,如10.0.0.1。

Re:SSL + REMOTE_ADDR,大多数工作场代理通过应用程序级别代理发送所有SSL,SOME只允许443出站。通过代理进入的任何东西仍然会给你代理地址,因为代理仍然是连接到你的网络服务器的计算机。

答案 1 :(得分:1)

如果代理是非透明的(例如,公司网络上的客户端),则仍然可以通过代理进行HTTPS。使用HTTPS通过代理,REMOTE_ADDR仍然是代理地址 - 代理仍然在路径中,它只是看到加密的流量。

如果客户端正在通过代理,您将不得不依赖代理来告诉您他们的IP。 X-Forwarded-For标头将包含此标题,但如果您信任该代理,则只能依赖此标头。如果这是用于记录目的,请记录REMOTE_ADDR和X-Forwarded-For。如果是其他内容,则需要维护代理白名单(由REMOTE_ADDR确定),您将接受X-Forwarded-For。