斷言
三重問:
-
IP偽造是否可能?
-
1為True,IP偽造的規模性是否存在限制?
-
1為True,甄別IP偽造的成功率是多少?
IP偽造是否可能
這個問題簡單提一下,真實的IP偽造是很難實現的,TCP協議中,IP地址被封裝在IP資料包內,傳送出現任何問題,都將與其封裝的IP進行互動。
互動必定失敗,因為偽造IP具備了一個“只能傳送、不能接收”的特點,作為替代品,人們往往會採用代理IP。
IP偽造的規模性
無論是普匿、還是高匿,代理方的IP數量都是有限的,所以在規模性方面,的確存在限制。
但我一直都很懷疑,黑客們可以通過超量的遠端入侵,來完成規模性突破,當然,這種層面的安全,服務端已經很難產生效果了,更多的是客戶端的安全防護。
甄別IP偽造的成功率是多少
IP偽造的成功率是技術層面的,換而言之,目前常用的IP獲取方式(就PHP而言)有三種,分別是:
-
HTTP_CLIENT_IP:IP包的報頭,本應儲存客戶端IP,但並沒有一致性的標準。
-
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_IP
、HTTP_X_FORWARDED_FOR
的安全性不足,所以本應只採用,REMOTE_ADDR的值,但可能採集到空值。
傳聞:如果REMOTE_ADDR傳來的是負載均衡的節點IP,那麼前兩者是可信的,如果客戶端直接與伺服器對接,則前兩者依舊是存在偽造。