防盜鏈原理:
http標(biāo)準(zhǔn)協(xié)議中有專門(mén)的字段記錄referer
一來(lái)可以追溯上一個(gè)入站地址是什么
二來(lái)對(duì)于資源文件,可以跟蹤到包含顯示他的網(wǎng)頁(yè)地址是什么。
因此所有防盜鏈方法都是基于這個(gè)Referer字段
網(wǎng)上比較多的2種
一種是使用apache文件FileMatch限制,在httpd.conf中增加 ( 其實(shí)也可以將把下面的語(yǔ)句存成一個(gè).htaccess文件),并放到你的網(wǎng)站的根目錄(就是www/html目錄),這樣子別人就沒(méi)有辦法盜連你的東東了~~
SetEnvIfNoCase Referer "^
Order Allow,Deny
Allow from env=local_ref
Allow from 127.0.0.1
這種很方便禁止非允許訪問(wèn)URL引用各種資源文件
請(qǐng)大家注意,把第一句"^http://www.linji.cn
我應(yīng)該這么寫(xiě)的
"^
第二種是使用rewrite,需要增加apache的mode_rewrite,支持.htaccess文件目錄權(quán)限限制
在虛擬主機(jī)根目錄增加.htaccess文件,描述從定向,把非本地地址refer的圖片文件都從定向到警告圖片或者警告網(wǎng)頁(yè)上。
首先要確認(rèn)你的服務(wù)器或空間的服務(wù)器解譯引擎為Apache2,還有支持.htaccess客戶設(shè)置文件,
如果你有自己的服務(wù)器就請(qǐng)先對(duì)./conf/httpd.conf 文件做以下修改
找到:#LoadModule rewrite_module modules/mod_rewrite.so
把前面的 # 給去丟
找到等一個(gè) AllowOverride None 改為 AllowOverride All
重啟Apache2服務(wù)器
接下就是做一個(gè) .htaccess 文件了,其 .htaccess 文件內(nèi)容為
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://aaoo.net/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://aaoo.net$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.aaoo.net/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.aaoo.net$ [NC]
RewriteRule .*.(jpg|jpeg|gif|png|bmp|rar|zip|exe)$ http://down.yoyo.com.ru/err.html [R,NC]
其中有色的地方都是要改為你的:
紅色:就是改為你提供下載頁(yè)面的地址,也就是只有通過(guò)這個(gè)地址才可以下載你所提供的東東。
藍(lán)色:就是要保護(hù)文件的擴(kuò)展名(以|分開(kāi)),也就是說(shuō)以這些為擴(kuò)展名的文件只有通過(guò)紅色的地址才可以訪問(wèn)。
綠色:如果不是通過(guò)紅色的地址訪問(wèn)藍(lán)色這些為擴(kuò)展名的文件時(shí)就回重定向到綠色地址上。
這個(gè)方法有個(gè)好處是,不同的虛擬主機(jī)用不同的描述定義。
接下就是怎么用 .htaccess 文件來(lái)實(shí)現(xiàn)防盜鏈了。
首先要在空間上建兩個(gè)目錄(當(dāng)然目錄名隨你),一個(gè)為 web 另一個(gè)為 down ,
web 是用來(lái)放下載頁(yè)面的(或下載程序),down 當(dāng)然就是放你提供的東東的啦,
把 .htaccess 文件的紅色部分改一下,改為http://你的域名/web。藍(lán)色部分
改為你要保護(hù)文件的擴(kuò)展名。綠色部分改為http://你的域名/web。改后保存
.htaccess 文件把它上傳到 down 目錄。
還有第三種:
我在解決plog禁止盜鏈的時(shí)候,發(fā)現(xiàn)個(gè)問(wèn)題,也算個(gè)好方法。
plog把所有資源都自己管理起來(lái),用resserver.php來(lái)動(dòng)態(tài)顯示,這樣統(tǒng)一的入口方便添加權(quán)限操作。
同時(shí)造成上面2種方法無(wú)法使用,因?yàn)椴辉偈莂pache直接訪問(wèn)資源文件,而是php通過(guò)文件讀取。
因此只能在代碼中做手腳:在讀取資源文件輸出之前,加如下判斷代碼
引用
$referer = $_SERVER['HTTP_REFERER'];
$selfurl = $_SERVER['HTTP_HOST'];
if(false == strpos($referer,$selfurl))
{
echo '非法盜鏈!';
exit(1);
}
這里有些偷懶,直接看引用地址中是否包含host地址,不過(guò)原理就是這樣,判斷referer是否是本站地址。
我們常常在下載的時(shí)候,也碰到盜鏈網(wǎng)站無(wú)法下載,報(bào)盜鏈的問(wèn)題。要下載這類文件最簡(jiǎn)單的方法就是改referer
比方flashget中,網(wǎng)址下面的"引用"一欄中,直接填寫(xiě)下載地址就可以了。
--------------------------
09博客園紀(jì)念T恤
新聞:微軟:不一樣的PowerPoint 2010
網(wǎng)站導(dǎo)航: 博客園首頁(yè) 個(gè)人主頁(yè) 新聞 社區(qū) 博問(wèn) 閃存 找找看
文章來(lái)源:http://www.cnblogs.com/xiaoao808/archive/2009/08/21/1551756.html