溫馨提示×

溫馨提示×

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

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

PHP怎么才能獲取真實IP

發(fā)布時間:2022-06-15 09:58:45 來源:億速云 閱讀:260 作者:iii 欄目:編程語言

本文小編為大家詳細介紹“PHP怎么才能獲取真實IP”,內(nèi)容詳細,步驟清晰,細節(jié)處理妥當,希望這篇“PHP怎么才能獲取真實IP”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

在PHP中,常見獲取請求IP的方式一般是通過3個超全局變量,不過很顯然三種獲取IP的方式并不完全可靠。

$_SERVER['REMOTE_ADDR'];             // 客戶端與服務(wù)器握手IP,如果使用代理則會獲取到代理IP
$_SERVER['HTTP_CLIENT_IP'];          // 代理服務(wù)器發(fā)送的HTTP頭(可偽造)
$_SERVER['HTTP_X_FORWARDED_FOR'];    // 用戶是在哪個IP使用的代理(可偽造)

如果域名沒有經(jīng)過代理,一般穩(wěn)妥的方式是 REMOTE_ADDR,如果是海外網(wǎng)絡(luò)最穩(wěn)妥的方式是云廠商提供可靠的源IP獲取方式,如谷歌云提供的:

PHP怎么才能獲取真實IP

當沒有出現(xiàn)偽造IP時,X-forwarded-For 一般是客戶端真實IP,負載均衡 IP

當出現(xiàn)偽造IP時,谷歌云將偽造的內(nèi)容進行前置,格式是 <偽造內(nèi)容>,客戶端真實IP,負載均衡 IP

所以無論是否偽造,我們都可以通過逗號切割字符串,找到倒數(shù)第二個X-forwarded-for的值,就可以獲取到真實客戶端IP。

當然,如果域名云廠商沒有提供類似的域名信息,我們就無法簡單通過超全局變量進行獲取了。

當域名云廠商沒有提供相應(yīng)的請求源IP信息時,這時我們也可以通過服務(wù)端交互雙方協(xié)商一種確認機制。

類似:在HTTP請求頭加入源IP信息進行判斷,由于是服務(wù)端之間的通信過程,偽造方無法知道偽造的具體信息內(nèi)容,因此通常情況下這樣的交互是可靠的。

判斷邏輯過程

服務(wù)端A: HTTP請求頭加入變量 MY_REALIP_c32fsjk234 => “1.2.3.4”,這時需要注意,變量名稱盡量不要太簡單,并且最好雙方約定一個隨機密鑰作為變量名稱,類似 MY_REALIP_c32fsjk234

接受請求端B: 通過 $_SERVER[‘MY_REALIP_c32fsjk234’] 判斷請求頭是否包含 MY_REALIP_c32fsjk234 變量,如果有,獲取相應(yīng)的IP作為真實IP。

讀到這里,這篇“PHP怎么才能獲取真實IP”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

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

AI