簡體   English   中英

獲取客戶端用於請求數據的網站的 IP

[英]Get the IP of the website the client is using to request the data

我試圖只允許某些 IP 使用 PHP 資源,我嘗試過使用服務器引用,但我很遺憾地體驗到它很容易被欺騙,因為它是一個客戶端 header,它可以很容易地修改。

我希望可以從網站訪問該資源,但是來自訪問該網站的客戶端的 IP 與來自該網站的 IP 不同。 這意味着客戶端不應該能夠直接通過瀏覽器或 curl 訪問資源,但如果通過網站訪問則應該允許。

我想我可以使用其中一些 $server 密鑰:

'HTTP_CLIENT_IP','HTTP_X_FORWARDED_FOR','HTTP_X_FORWARDED','HTTP_FORWARDED_FOR','HTTP_FORWARDED','REMOTE_ADDR'

我不知道使用哪一個來獲取網站 IP以查看它是否與預期匹配,以及哪個返回客戶端的 IP。

我已經嘗試過,但沒有用,因為它可以被欺騙

public function getHost()
{
    $url = parse_url($_SERVER['HTTP_REFERER']);
    if ($url != null) {
        return gethostbyname($url["host"]); // returns referer IP's
    }
}

很明顯 getHost() 應該從上面提到的返回一個密鑰,但我不確定是哪一個。

先感謝您

想測試@deceze 是否正確,所以我做了一些測試左:本地,右:同一主機

左:本地,右:同一主機左:本地,右:跨站點

左:本地,右:跨站點


因此,可悲的是,他沒有辦法檢查使用 $_server 並引用其不可靠的解決方案,直接從您的服務器執行 js 請求並將它們作為內容注入,顯示預渲染數據

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM