【IP】僞造 && 甄別

斷言

三重問:segmentfault

  1. IP僞造是否可能?安全

  2. 1爲True,IP僞造的規模性是否存在限制?服務器

  3. 1爲True,甄別IP僞造的成功率是多少?負載均衡

IP僞造是否可能

這個問題簡單提一下,真實的IP僞造是很難實現的,TCP協議中,IP地址被封裝在IP數據包內,傳送出現任何問題,都將與其封裝的IP進行交互。curl

交互一定失敗,由於僞造IP具有了一個「只能發送、不能接收」的特色,做爲替代品,人們每每會採用代理IP。url

IP僞造的規模性

不管是普匿、仍是高匿,代理方的IP數量都是有限的,因此在規模性方面,的確存在限制。.net

但我一直都很懷疑,黑客們能夠經過超量的遠程入侵,來完成規模性突破,固然,這種層面的安全,服務端已經很難產生效果了,更多的是客戶端的安全防禦。代理

甄別IP僞造的成功率是多少

IP僞造的成功率是技術層面的,換而言之,目前經常使用的IP獲取方式(就PHP而言)有三種,分別是:code

  • HTTP_CLIENT_IP:IP包的報頭,本應儲存客戶端IP,但並無一致性的標準。blog

  • HTTP_X_FORWARDED_FOR:僞造過於方便,並且僞造方式在互聯網上過於氾濫。

  • REMOTE_ADDR:末端IP,顯示的是數據包發送端的IP——多是代理IP,誰發包,誰簽名。但可能存在無值的結果。

三種IP的僞造方式:(源於豆瓣)

curl_setopt($curl, CURLOPT_HTTPHEADER, array (
            'Client_Ip: '.mt_rand(0, 255).'.'.mt_rand(0, 255).'.'.mt_rand(0, 255).'.'.mt_rand(0, 255),
));//優勢:僞形成本低,通殺90%系統

curl_setopt($curl, CURLOPT_HTTPHEADER, array (
            'X-Forwarded-For: '.mt_rand(0, 255).'.'.mt_rand(0, 255).'.'.mt_rand(0, 255).'.'.mt_rand(0, 255),
));//優勢:僞形成本低,通殺90%系統

curl_setopt($curl, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
curl_setopt($curl, CURLOPT_PROXY, '1.1.1.1:8080');// 只能採用代理來進行模擬。
//優勢:通殺100%系統

得出結論,因爲HTTP_CLIENT_IPHTTP_X_FORWARDED_FOR的安全性不足,因此本應只採用,REMOTE_ADDR的值,但可能採集到空值。

傳聞:若是REMOTE_ADDR傳來的是負載均衡的節點IP,那麼前二者是可信的,若是客戶端直接與服務器對接,則前二者依舊是存在僞造。

參考資料:
你永遠得到不到個人真實IP
如何避免用戶訪問請求僞造IP

相關文章
相關標籤/搜索