獲取客戶端IP方案

2021-07-08 10:08:34 字數 1224 閱讀 1437

獲取客戶端ip,很多**都會拿http_client_ip的值,其次拿http_x_forwarded_for,最後是remote_addr

關於這個的討論見:

比較的好的獲取客戶端ip和驗證ip**是怎樣的

以下內容是聽取答案後的總結

1.http_client_ip頭是有的,只是未成標準,不一定伺服器都實現了。

2.http_x_forwarded_for是有標準定義,用來識別經過http**後的客戶端ip位址,格式:clientip,proxy1,proxy2。詳細解釋見 

3.remote_addr是可靠的, 它是最後乙個跟你的伺服器握手的ip,可能是使用者的**伺服器,也可能是自己的反向**。

關於偽造:http_*頭都很容易偽造。例如使用火狐外掛程式偽造x-forwarded_forip為8.8.8.8,此時清掉cookie再訪問 它會以為你是8.8.8.8來的。參考: sf上另乙個關於偽造ip的問題

一段不錯的獲取ip**:

function

get_client_ip

() }}}

return

null;

}

參考 @joyqi 的思路,有些情況可以考慮只獲取remote_addr(ps:一般不會這樣做)

remote_addr 是你的客戶端跟你的伺服器「握手」時候的ip。如果使用了「匿名**」,remote_addr將顯示**伺服器的ip。 

http_client_ip 是**伺服器傳送的http頭。如果是「超級匿名**」,則返回none值。同樣,remote_addr也會被替換為這個**伺服器的ip。 

$_server['remote_addr']; //訪問端(有可能是使用者,有可能是**的)ip 

$_server['http_client_ip']; //**端的(有可能存在,可偽造) 

$_server['http_x_forwarded_for']; //使用者是在哪個ip使用的**(有可能存在,也可以偽造)

**:

獲取客戶端ip

1.統計訪問者ip位址 2.設定黑名單,黑名單的使用者不可以訪問聊天室。內容提要 這種情況下同樣透露了客戶端是使用了 伺服器 但編造了乙個虛假的隨機ip 220.4.251.159 代替客戶端的真實 ip來欺騙它 獲取客戶端 ip其實不是個簡單的活兒 因為存在 ip欺騙 和 問題 所以獲取客戶端的 ...

獲取客戶端IP位址

title generating test data author wufeng4552 date 2009 09 23 10 34 02 功能 獲客戶 ip位址 if object id getclientip isnot null drop proc getclientip go create ...

客戶端獲取IP位址

string ip request.getheader x forwarded for string regex 2 0 4 d 25 0 5 01 d d?2 0 4 d 25 0 5 01 d d?if ip null ip.length 0 ip.equalsignorecase locali...