WEB程式獲取客戶端IP的做法及其安全隱患

2022-09-13 07:33:10 字數 901 閱讀 5450

web程式獲取客戶端ip的方法有兩種,一種是直接獲取訪問**的ip,另一種是通過http頭中帶的ip資訊來獲取。

前者獲取的ip是直接接觸的ip,既獲取的永遠都是最後一環的ip,如果使用者使用了**,就獲取不到使用者真實ip了。

後者獲取的ip是「**伺服器」在http頭加上的資訊,幫助識別或者標記ip路徑,或者客戶端的原始ip,但是http頭的資訊是可控的,也就是說可偽造。

以php為例,php可以通過$_server和getenv獲取常量ip如下:

其中 remote_addr 就是上面提到的情況1,http_client_ip 和 http_x_forwarded_for 就是情況二。

對於乙個完整的獲取ip的功能來說,較為合理的是獲取 http_x_forwarded_for 和 http_client_ip 等**伺服器標識的ip,若不存在則獲取直接相連的 remote_addr 。

但是這樣做的安全隱患就是:x_forwarded_for 等資訊是http頭中的字段,可以被修改(偽造)為任意字串。假設乙個業務情景是:將使用者的ip存入資料庫內,若先獲取到了使用者偽造的ip字串,注入了sql查詢語句,造成了 sql inject 漏洞。 

所以要麼直接獲取remote_addr,要麼對 http_x_forwarded_for 等進行過濾(比如按格式來過濾,或者用正則來刨除除了'點'和'數字'以外其他字元)

Web獲取客戶端的IP位址

一 思路 主要用於區域網內 通過web獲取客戶端的ip位址較簡單,從客戶端向web伺服器傳送的資料報中 request物件 中即可解析出,但實際應用中,還要考慮 伺服器,路由器的 等等。1 在客戶端來獲取客戶機的mac位址,所以當請求到達客戶端後,通過客戶端指令碼來獲取客戶端mac位址,然後再傳送給...

獲取客戶端ip

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

獲取客戶端的IP

在開發工作中,我們常常需要獲取客戶端的ip。一般獲取客戶端的ip位址的方法是 request.getremoteaddr 但是在通過了apache,squid等反向 軟體就不能獲取到客戶端的真實ip位址了。原因 由於在客戶端和服務之間增加了中間 因此伺服器無法直接拿到客戶端的ip,伺服器端應用也無法...