HTTP協議之防盜鏈與反防盜鏈
阿新 • • 發佈:2019-02-02
使用HTTP協議。利用referer做防盜鏈(不需要用PHP編寫,而是在伺服器層面控制就OK了)
我們在網頁裡訪問站外的圖片的時候,在圖片本站是可以看得,在外頭就不能看了
因為header資訊中的referer元素。
還有是做統計的時候,
我們能夠統計出來使用者是從哪個地方,什麼時間訪問網站的。比如騰訊分析網站
統計的時候是靠什麼知道使用者從什麼地方去的網站
在HTTP協議中 頭資訊中有一個很重要的選項 referer
referer 表示的是網頁的來源以及上一頁的地址
如果直接在瀏覽器輸入地址,進入網站,則沒有referer頭資訊
所以,伺服器可根據referer來知道使用者從哪個網站進來的和圖片是從哪個網站進來的
利用referer頭資訊來設定防盜鏈的具體操作步驟如下:
- /**
- 如何配置apache伺服器。用於圖片防盜鏈(使用url重寫)
- 在web伺服器層面,我們可以在http協議的referer頭資訊來判斷,
- 如果來自站外,則統一重寫到一個很小的防盜鏈提醒圖片上去
- 步驟:
- 1.開啟 apache 重寫模組 mod_rewrite
- (D:\wamp\bin\apache\apache2.4.9\conf)
-
#LoadModule rewrite_module modules/mod_rewrite.so
- 把#去掉,重啟apache
- 2.在需要防盜的網站或者目錄下,寫 .htaccess 檔案(windows下不能直接建立,可以另存)
- 並指定防盜鏈規則
- 分析referer資訊,如果不是來自本站,則重寫
- **/
- 重寫規則 .htaccess 檔案
- 1.哪種情況重寫規則
- 是jpeg/gif/png圖片的時候
- 是referer頭與localhost不匹配的時候
- 2.怎麼重寫
- 統一 rewrite 到某個防盜鏈圖片上
-
RewriteEngine On
- //只是在改頁面下生效
- Rewrite Base /HTTPxieyi/day1
- //會對以下格式的檔案進行重寫規則
- RewriteCond %{REQUEST_FILENAME} .*\.(jpg|jpeg|gif|png) [NC]
- //如果不是來自localhost的使用者,會重寫
- RewriteCond %{HTTP_REFERER} !localhost [NC]
- //會重寫到自學it網的logo上
- RewriteRule .* http://www.zixue.it/static/image/common/zixuelogo.png
- <!DOCTYPE html>
- <htmllang="en">
- <head>
- <metacharset="UTF-8">
- <title>圖片的防盜鏈</title>
- </head>
- <body>
- <p>
- <imgsrc="http://imgsrc.baidu.com/forum/w%3D580%3B/sign=5547962a02d162d985ee621421e4a8ec/0d338744ebf81a4c06403427df2a6059242da6ea.jpg"alt="">
- <imgsrc="./bb.jpg"alt="">
- <imgsrc="./aa.jpg"alt="">
- </p>
- </body>
- </html>
- <?php
- /**
- 反防盜鏈
- ****/
- require('./07.class.php');
- $http = new Http('http://localhost/HTTPxieyi/day1/bb.jpg');
- //如果沒有加以下這句話,就會顯示盜鏈
- //加上referer就會告訴瀏覽器,我是來自localhost的,不是來自其他網站的,你不用防我
- $http->setHeader('Referer: http://localhost');
- $res = $http->get();
- //aaa.顯示的倒鏈
- //file_put_contents('./aaa.jpg',substr(strstr($res,"\r\n\r\n"),4));
- file_put_contents('./bbb.jpg',substr(strstr($res,"\r\n\r\n"),4));
- //應該在判斷路徑或者response的mime頭資訊,確定圖片的型別
轉自:http://blog.csdn.net/xiao_tommy/article/details/53186201