<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>
            php語言

            使用php偽造referer的方法

            時間:2025-04-03 19:29:53 php語言 我要投稿
            • 相關推薦

            使用php偽造referer的方法

              當瀏覽器向web服務器發送請求的時候,一般會帶上Referer,告訴服務器我是從哪個頁面鏈接過來的,服務器籍此可以獲得一些信息用于處理,不過這個Referer是可以偽造。下面是小編為大家帶來的使用php偽造referer的方法,歡迎閱讀。

              使用php偽造referer的方法

              什么是HTTP Referer

              簡言之,HTTP Referer是header的一部分,當瀏覽器向web服務器發送請求的時候,一般會帶上Referer,告訴服務器我是從哪個頁面鏈接過來的,服務器籍此可以獲得一些信息用于處理。比如從我主頁上鏈接到一個朋友那里,他的服務器就能夠從HTTP Referer中統計出每天有多少用戶點擊我主頁上的鏈接訪問他的網站。

              Referer其實應該是英文單詞Referrer,不過拼錯的人太多了,所以編寫標準的人也就將錯就錯了。

              我的問題

              我剛剛把feed閱讀器改變為Gregarius,但他不像我以前用的liferea,訪問新浪博客的時候,無法顯示其中的圖片,提示“此圖片僅限于新浪博客用戶交流與溝通”,我知道,這就是HTTP Referer導致的。

              由于我上網客戶端配置的特殊性,首先懷疑是squid的問題,但通過實驗排除了,不過同時發現了一個Squid和Tor、Privoxy協同使用的隱私泄露問題,留待以后研究。

              Gregarius能處理這個問題么?

              答案是否定的,因為Gregarius只是負責輸出html代碼,而對圖像的訪問是有客戶端瀏覽器向服務器請求的。

              不過,安裝個firefox擴展也許能解決問題,文中推薦的”Send Referrer”我沒有找到,但發現另外一個可用的:”RefControl“,可以根據訪問網站的不同,控制使用不同的Referer。

              但是我不喜歡用Firefox擴展來解決問題,因為我覺得他效率太低,所以我用更好的方式——Privoxy。

              Privoxy真棒

              在Privoxy的default.action中添加兩行:

              {+hide-referrer{forge}}

              .album.sina.com.cn

              這樣Gregarius中新浪博客的圖片就出來了吧?+hide-referrer是Privoxy的一個過濾器,設置訪問時對HTTP Referer的處理方式,后面的forge代表用訪問地址當作Refere的,還可以換成block,代表取消Referer,或者直接把需要用的Referer網址寫在這里。

              用Privoxy比用Firefox簡單的多,趕緊換吧。

              From https to http

              我還發現,從一個https頁面上的鏈接訪問到一個非加密的http頁面的時候,在http頁面上是檢查不到HTTP Referer的,比如當我點擊自己的https頁面下面的w3c xhtml驗證圖標(網址為http://XXX),從來都無法完成校驗,提示:

              No Referer header found!

              原來,在http協議的rfc文檔中有定義:

              代碼如下:

              15.1.3 Encoding Sensitive Information in URI's

              Clients SHOULD NOT include a Referer header field in a (non-secure)

              HTTP request if the referring page was transferred with a secure

              protocol.

              這樣是出于安全的考慮,訪問非加密頁時,如果來源是加密頁,客戶端不發送Referer,IE一直都是這樣實現的,Firefox瀏覽器也不例外。但這并不影響從加密頁到加密頁的訪問。

              Firefox中關于Referer的設置

              都在里,有兩個鍵值:

              network.http.sendRefererHeader (default=2) 設置Referer的發送方式,0為完全不發送,1為只在點擊鏈接時發送,在訪問頁面中的圖像什么的時候不發送,2為始終發送。參見Privacy Tip #3: Block Referer Headers in Firefox

              network.http.sendSecureXSiteReferrer (default=true) 設置從一個加密頁訪問到另外一個加密頁的時候是否發送Referer,true為發送,false為不發送。

              利用Referer防止圖片盜鏈

              雖然Referer并不可靠,但用來防止圖片盜鏈還是足夠的,畢竟不是每個人都會修改客戶端的配置。實現一般都是通過apache的配置文件,首先設置允許訪問的地址,標記下來:

              # 只允許來自don.com的訪問,圖片可能就放置在don.com網站的頁面上

              SetEnvIfNoCase Referer "^http://www.don.com/" local_ref

              # 直接通過地址訪問

              SetEnvIf Referer "^$" local_ref

              然后再規定被標記了的訪問才被允許:

              代碼如下:

              <FilesMatch ".(gif|jpg)">

              Order Allow,Deny

              Allow from env=local_ref

              </FilesMatch>

              或者

              代碼如下:

              <Directory /web/images>

              Order Deny,Allow

              Deny from all

              Allow from env=local_ref

              </Directory>

              不要使用Rerferer的地方

              不要把Rerferer用在身份驗證或者其他非常重要的檢查上,因為Rerferer非常容易在客戶端被改變,不管是通過上面介紹的Firefox擴展,或者是Privoxy,甚至是libcurl的調用,所以Rerferer數據非常之不可信。

              如果你想限制用戶必須從某個入口頁面訪問的`話,與其使用Referer,不如使用session,在入口頁面寫入session,然后在其他頁面檢查,如果用戶沒有訪問過入口頁面,那么對應的session就不存在,參見這里的討論。不過和上面說的一樣,也不要過于相信這種方式的“驗證”結果。

              個人感覺現在Rerferer除了用在防盜鏈,其他用途最多的就是訪問統計,比如統計用戶都是從哪里的鏈接訪問過來的等等。

              HTTP-REFERER這個變量已經越來越不可靠了,完全就是可以偽造出來的東東。

              以下是偽造方法:

              PHP(前提是裝了curl):

              代碼如下:

              $ch = curl_init();

              curl_setopt ($ch, CURLOPT_URL, "http://www.XXX.cn/xxx.asp");

              curl_setopt ($ch, CURLOPT_REFERER, "http://www.XXX.cn/");

              curl_exec ($ch);

              curl_close ($ch);

              PHP(不裝curl用sock)

              $server = 'www.dc9.cn';

              $host = 'www.dc9.cn';

              $target = '/xxx.asp';

              $referer = 'http://www.XXX.cn/'; // Referer

              $port = 80;

              $fp = fsockopen($server, $port, $errno, $errstr, 30);

              if (!$fp)

              {

              echo "$errstr ($errno)<br />n";

              }

              else

              {

              $out = "GET $target HTTP/1.1rn";

              $out .= "Host: $hostrn";

              $out .= "Cookie: ASPSESSIONIDSQTBQSDA=DFCAPKLBBFICDAFMHNKIGKEGrn";

              $out .= "Referer: $refererrn";

              $out .= "Connection: Closernrn";

              fwrite($fp, $out);

              while (!feof($fp))

              {

              echo fgets($fp, 128);

              }

              fclose($fp);

              }

              javascript

              xmlHttp.setRequestHeader("Referer", "http://URL");//   呵呵~假的~

              JS不支持^_^

              原理都是sock構造http頭來senddata。其他語言什么的比如perl也可以,

              目前比較簡單的防御偽造referer的方法是用驗證碼(Session)。

              現在有一些能防盜鏈軟件的商業公司比如UUDOG,linkgate,VirtualWall什么的,都是開發的應用于IIS上面的dll。

              有的是采用cookies驗證、線程控制,有的是能隨機生成文件名然后做URL重寫。有的方法能的確達到不錯的效果.

              不過道高一尺,魔高一丈,這些雕蟲小技終歸是有破解方法的。

              一般的就是這樣的了,但是服務器就不好實現偽造,只能制造不多的數據了,如果可以實現訪問網頁就可以偽造,那就可以實現了真正的偽造,實現自然IP分布。


            【使用php偽造referer的方法】相關文章:

            PHP中用CURL偽造IP來源的方法06-26

            php使用sessioncookie變量的方法06-09

            PHP中魔術方法的使用方法10-15

            PHP autoload函數的使用方法10-22

            PHP中trait的使用方法08-20

            使用php自動提交表單的方法11-16

            php中cookie的使用方法09-27

            在PHP中使用RSS技術的方法08-03

            使用php顯示時間的常用方法10-24

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看