2009-07-22 190 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從。