文章加密

;

2018年11月29日 星期四

$_SERVER['REMOTE_ADDR'], 抓使用者IP

$_SERVER['REMOTE_ADDR'] 會抓到 真實該本人位置 或 代理伺服器Proxy 的IP。

所謂代理伺服器Proxy是A,B,C三人都從台灣各地要去瀏覽美國某網站,因為距離很遠,網路連接時會通過海纜,但海纜寬頻有限,這時中華電信就會用代理伺服器Proxy(也就是某主機)紀錄A去看完留下的網路內容,當B又要連結該內容,B不需要再通過海纜去到外國,只要從Proxy抓取該網路內容,即可。
中華電信並不一定要用代理伺服器Proxy,只是通常會這樣做。

如果距離很近/不需要用到Proxy,則就能抓到他的真實IP,或殭屍主機(駭客才會用的)。




代理快取伺服器的技術中大致分類為"正向代理(Proxy)快取"與"反向代理(Reverse Proxy)快取"兩種快取技術。

現行較為主流的反向代理技術逐漸取代了正向代理技術,主要原因就是反向代理技術由網站方加設,便能提供大眾使用者的便利,而其所主要應用的技術為 "內容傳遞網路-CDN(Content delivery network)"。




  • $_SERVER['HTTP_CLIENT_IP']这个头是有的,但是很少,不一定服务器都实现了。客户端可以伪造。
  • $_SERVER['HTTP_X_FORWARDED_FOR'] 當今多數快取伺服器的使用者為大型ISP,為了通過快取的方式來降低他們的外部頻寬,他們常常通過鼓勵或強制用戶使用代理伺服器來接入網際網路。有些情況下,這些代理伺服器是透明代理,用戶甚至不知道自己正在使用代理上網。
    它是有标准定义,用来识别经过HTTP代理后的客户端IP地址,格式:
    clientip,proxy1,proxy2。详细解释见 http://zh.wikipedia.org/wiki/X-Forwarded-For。 客户端可以伪造。算是個約定成俗的會添加在header裡的meta標籤中,雖然沒有硬性規定必須。
  • $_SERVER['REMOTE_ADDR'] 是可靠的, 它是最后一个跟你的服务器握手的IP,可能是用户的代理服务器,也可能是自己的反向代理。客户端不能伪造。
    客户端可以伪造的参数必须过滤和验证!很多人以为$_SERVER变量里的东西都是可信的,其实并不不然,$_SERVER['HTTP_CLIENT_IP']$_SERVER['HTTP_X_FORWARDED_FOR']都来自客户端请求的header里面。

沒有留言:

張貼留言