簡體   English   中英

如何隱藏$ _SERVER ['HTTP_REFERER']

[英]How can I hide $_SERVER['HTTP_REFERER']

當用戶通過我的站點的鏈接瀏覽到另一個站點時,如何隱藏$_SERVER['HTTP_REFERER']

您不能,您無法控制發送到另一個站點的標頭。 標頭從瀏覽器發送到正在導航的站點。 這意味着您不能以任何方式操縱它們(短於MITM攻擊)。

您可以通過中間代理將用戶重定向到站點,但是該代理將成為新的引薦來源。 例如

Your Link -> Proxy -> End result

不僅通常不應該這樣做,而且至少在您描述的方式中是不可能的。 由客戶端決定將請求標頭中的內容發送到另一台服務器,而不是您自己。

我還應該指出,這與PHP無關。 PHP通過$ _SERVER ['HTTP_REFERRER']使您可以訪問此標頭變量,但是您要解決的問題是避免客戶端將引薦來源網址發送到下一個服務器。

一些選擇:

如果您的站點使用HTTPS,則不會發送它。

如果您在站點上構建重定向器腳本並使用HTTP Refresh標頭,則瀏覽器通常將不發送引薦來源網址,如果發送了該引薦來源網址,則只會發送重定向器的URL。 例如:

http://www.yoursite.com/redir.php?url=http%3A%2F%2Fwww.google.com

<?php
    if (isset($_GET['url'])) {
        header("Refresh: 0; " . $_GET['url']);
    }
?>

現在,您必須小心使用此小腳本。 然后,任何人都可以使用您的網站進行重定向,就像它來自您一樣。 同樣,使用此方法,任何人都可以將想要的任何標頭注入到客戶端。 這只是給您一個想法。 最后,為此使用refresh標頭違背了標准, 因此不應該這樣做

最后,Google,Facebook,PayPal等都具有重定向器腳本。 他們在URL上使用某種加密的哈希值來確定是否生成了重定向。 如果您不指定該哈希值,而僅提供URL,則將在重定向之前提示用戶。 不友好。

看,最重要的是,沒有真正的理由要做你正在做的事情。 如果您試圖隱藏URL中的某些內容,那么您將遇到更大的問題。 默默無聞的安全性不好嗎?

如果您在受控(內部網)環境中工作,則可能會因修復瀏覽器配置而受益,請參見例如。 http://cafe.elharo.com/privacy/privacy-tip-3-block-referer-headers-in-firefox/,但這遠非理想。

暫無
暫無

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

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