溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何獲取用戶的Ip地址

發(fā)布時間:2021-02-19 15:09:51 來源:億速云 閱讀:478 作者:Leah 欄目:開發(fā)技術(shù)

今天就跟大家聊聊有關(guān)如何獲取用戶的Ip地址,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

分析過程

 代碼如下:


function getIP() {
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$realip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
$realip = $_SERVER['HTTP_CLIENT_IP'];
} else {
$realip = $_SERVER['REMOTE_ADDR'];
}
return $realip;
}



這個是網(wǎng)上常見獲取,ip函數(shù),用這些值獲取IP,我們首先要弄清楚,這些數(shù)據(jù)是從那個地方傳過來的。

IP獲取來源

1.'REMOTE_ADDR' 是遠(yuǎn)端IP,默認(rèn)來自tcp 連接是,客戶端的Ip??梢哉f,它最準(zhǔn)確,確定是,只會得到直接連服務(wù)器客戶端IP。如果對方通過代理服務(wù)器上網(wǎng),就發(fā)現(xiàn)。獲取到的是代理服務(wù)器IP了。

如:a->b(proxy)->c ,如果c 通過'REMOTE_ADDR' ,只能獲取到b的IP,獲取不到a的IP了。

另外:該IP想篡改將很難實現(xiàn),在傳遞知道生成php server值,都是直接生成的。

2.'HTTP_X_FORWARDED_FOR','HTTP_CLIENT_IP' 為了能在大型網(wǎng)絡(luò)中,獲取到最原始用戶IP,或者代理IP地址。對HTTp協(xié)議進(jìn)行擴展。定義了實體頭。

HTTP_X_FORWARDED_FOR = clientip,proxy1,proxy2 所有IP用”,”分割。 HTTP_CLIENT_IP 在高級匿名代理中,這個代表了代理服務(wù)器IP。既然是http協(xié)議擴展一個實體頭,并且這個值對于傳入端是信任的,信任傳入方按照規(guī)則格式輸入的。以下以x_forword_for例子加以說明,正常情況下,這個值變化過程。

如何獲取用戶的Ip地址


分析Bug風(fēng)險點:

通過剛剛分析我們發(fā)現(xiàn),其實這些變量,來自http請求的:x-forword-for字段,以及client-ip字段。 正常代理服務(wù)器,當(dāng)然會按rfc規(guī)范來傳入這些值。但是,當(dāng)一個用戶直接構(gòu)造該x-forword-for值,發(fā)送給用戶用戶,那將會怎么樣呢?

如何獲取用戶的Ip地址圖(1)

第2步,修改x-forword-fox值,我們看看結(jié)果

如何獲取用戶的Ip地址

第三步,我們再修改下看看會怎么樣?

如何獲取用戶的Ip地址

看完上述內(nèi)容,你們對如何獲取用戶的Ip地址有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI