關於隱藏來路 Referrer 的方法探討

本文爲大家講解的是關於隱藏來路 Referrer 的方法探討,感興趣的同學參考下。

關於隱藏來路 Referrer 在某些情況下很有用,國外網賺界使用的非常廣泛。比如流量提供方由於不想讓聯盟知道自己的流量來源,就需要隱藏自己來源網站的 referer。今天飄易就來簡單分享下我自己的心得。

先看如何獲取這個來路:
js: document.referrer
php: echo $_SERVER['HTTP_REFERER']; 

最 開始,大家使用的技術一般是 DMR (Double Meta Refresh) ,即兩次meta refresh 刷新,這種技術對於ie瀏覽器, 目前爲止還有有效果。但是對於chrome、Safari、firefox瀏覽器就不一定可行,存在泄漏的風險。

目前爲了保險起見,飄易覺的還有以下幾個方式,可以同時採用:
1、Meta Refresh
    這個就不說了,很簡單,頁面2次跳轉刷新。    

2、Javascript Location Replace
    replace 方法通過指定URL替換當前緩存在歷史裏(客戶端)的項目,因此當使用replace方法之後,你不能通過“前進”和“後退”來訪問已經被替換的URL。
    語法: location.replace(URL)   
    如果有這種應用: 需要重新加載該頁面,也就是說期望頁面能夠在服務端重新被創建,期望是 Not IsPostback 的,這裏,location.replace() 就可以完成此任務。被replace的頁面每次都在服務端重新生成。
代碼: location.replace(location.href);    

3、iFrame Parent Post
    使用示例一:

<html>
<head>
<script>
function load(){
    var postdata = '<form id="dynForm" method="POST" action="http://www.piaoyi.org/" target=
"_top">' +
                   '<input type=hidden name="uname" value="piaoyi" />' +
                   '<input type=hidden name="pwd" value="123456" />' +
                   '</form>';
    top.frames[0].document.body.innerHTML=postdata;
    top.frames[0].document.getElementById('dynForm').submit();
}
</script>
</head>
<body οnlοad="load()">
<iframe src="about:blank" id="noreferer"></iframe>
</body>
</html>


    使用示例二:

function open_without_referrer(link){
document.body.appendChild(document.createElement('iframe')).src='javascript:"<script>top.location.replace(''+link+'')</script>"';
}

    4、Flash getURL Function
    這點是利用Flash裏面的 getURL 函數打開新頁面。比如 getURL(open_url,'_blank'); 就可以在新窗口中打開指定url。
    但 是經過飄易的測試,flash跳轉也不靠譜了。在chrome、firefox下都泄漏了來路referer信息。只有在ie下 纔沒有了JS的來路,但 是php的來路 $_SERVER['HTTP_REFERER']  還是有值,指向具體的 swf 文件。

flash跳轉示例:
    網頁代碼:

<!--flash引用代碼-->
<object id="open_url" width="25" height="20" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" >
    <param name="movie" value="piaoyi.org_open_url.swf?callback=get_url" />
    <param name="quality" value="high" />
    <param name="wmode" value="transparent" />
    <embed width="25" height="20"  src="piaoyi.org_open_url.swf?callback=get_url" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="transparent"/>
</object>
<script type="text/javascript">
    function get_url(){
        return 'http://www.piaoyi.org/';
    }</script>

    新建個flash,添加個button, 在動作中粘貼如下代碼:

    on (release) { 
        import flash.external.ExternalInterface;
        loadVariablesNum('','callback');//獲取js回調函數名稱,存放在callback變量中
        if(callback!=''){
            open_url=ExternalInterface.call(callback);//調用js程序,獲取url
            if(open_url!=undefined){
                getURL(open_url,'_blank');//在新窗口打開鏈接 
            }
        }
    }

5、HTTPS跳到HTTP
    由於HTTPS是加密傳輸,出於安全需要,避免泄露用戶的隱私(如銀行支付系統的賬戶私人敏感信息來源) ,幾乎所有主流瀏覽器都遵守了 RFC-2616規範,在 https 頁面 來到 http 頁面時,不會發送 referer 信息。 要做到這點,就需要自行架設https環境,需要考驗技術了。

注 意,我說的是幾乎所有主流瀏覽器,但是就有個別瀏覽器爲了自身的利益,不遵守規範。比如手機端的安卓/蘋果 UC瀏覽器,即使是由HTTPS 來 到 HTTP頁面時,如果用戶是從 UC自己的神馬搜索點擊搜索結果後來到HTTP頁面時,然後跳轉到 https 再跳到 http 時,神馬搜索的來 路referrer依然被 uc瀏覽器發送過來了。

UC瀏覽器耍流氓啊。與此類似的還有 小米miui系統裏自帶的小米瀏覽器,有的時候也會偷偷發送這個referer。

附註:RFC-2616規範第15.1.3條

15.1.3 Encoding Sensitive Information in URI's   Because the source of a link might be private information or might
   reveal an otherwise private information source, it is strongly
   recommended that the user be able to select whether or not the
   Referer field is sent. For example, a browser client could have a
   toggle switch for browsing openly/anonymously, which would
   respectively enable/disable the sending of Referer and From
   information.   Clients SHOULD NOT include a Referer header field in a (non-secure)
   HTTP request if the referring page was transferred with a secure
   protocol.

6、使用標籤:rel="noreferrer"
    目前基於webkit內核的比如chrome、Safari瀏覽器均支持該標籤。    

7、html data URI scheme
    使用內嵌的方式,不會發起二次請求。



原文地址:http://www.adminso.com/articles/view/92066
(站長搜索- http://www.adminso.com/websites -網站收錄,爲站長提供分類最全,最專業的網站收錄平臺!)

發佈了0 篇原創文章 · 獲贊 1 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章