2009-07-22 133 views
1

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

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

我在考虑的唯一一件事是客户端通过HTTPS连接,在这种情况下代理应该被绕过(一般来说),所以REMOTE_ADDR将是准确的。

任何想法?

回答

1

任何客户端(javascript,java)都会给你PC的IP地址。这可能是一个内部IP地址,如10.0.0.1。

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

+0

您提到Javascript为例,但您无法使用Javascript获取本地IP。否则,可以使用Javascript和AJAX将IP返回到服务器。 – 2009-07-22 05:40:24

1

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

如果客户端正在通过代理服务器,您将不得不依赖代理服务器告诉您他们的IP。 X-Forwarded-For标题将包含这一点,但如果您信任代理,则只能真正依靠此。如果这是为了记录目的,请记录REMOTE_ADDR和X-Forwarded-For。如果是用于其他事情,则需要维护一个代理白名单(由REMOTE_ADDR决定),您将接受X-Forwarded-For从。