防盜鏈原理:
php
http標準協議中有專門的字段記錄refererhtml
一、他能夠追溯到請求時從哪一個網站連接過來的。web
二、來對於資源文件,能夠跟蹤到包含顯示他的網頁地址是什麼。apache
所以全部防盜鏈方法都是基於這個Referer字段瀏覽器
網上比較多的2種服務器
一種是使用apache文件FileMatch限制,在httpd.conf中增長 ( 其實也能夠將把下面的語句存成一個.htaccess文件),並放到你的網站的根目錄(就是www/html目錄),這樣子別人就沒有辦法盜連你的東東了~~ide
這種很方便禁止非容許訪問URL引用各類資源文件
請你們注意,把第一句"^http://yahoo.com/"改成你的網站,好比個人網站是:http://www.linji.cn
我應該這麼寫的
"^http://www.linji.cn/"網站
第二種是使用rewrite,須要增長apache的mode_rewrite,支持.htaccess文件目錄權限限制
在虛擬主機根目錄增長.htaccess文件,描述從定向,把非本地地址refer的圖片文件都從定向到警告圖片或者警告網頁上。
首先要確認你的服務器或空間的服務器解譯引擎爲Apache2,還有支持.htaccess客戶設置文件,
若是你有本身的服務器就請先對./conf/httpd.conf 文件作如下修改
找到:#LoadModule rewrite_module modules/mod_rewrite.so
把前面的 # 給去丟
找到等一個 AllowOverride None 改成 AllowOverride All
重啓Apache2服務器 google
(在這順便介紹一下圖防盜鏈和轉向)url
先解釋一下圖片防盜鏈和轉向:
圖片防盜鏈有什麼用?
防止其它網站盜用你的圖片,浪費你寶貴的流量。
圖片轉向有什麼用?
若是你的網站以圖片爲主,哪天發現月底沒到流量就快用光了,那就能夠利用圖片轉向,在不修改網頁的前提下,把圖片下載請求轉向到其它空間(好比試用主機),臨時過渡。
下面開始講解,好比你的圖片都在img目錄下,那就在該目錄下放一個名爲 .htaccess 的文件,內容以下:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !simcole.cn [NC]
RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !baidu.com [NC]
RewriteCond %{HTTP_REFERER} !bloglines.com [NC]
RewriteRule .(jpg|gif|png|bmp|swf|jpeg) /image/replace.gif [R,NC,L]
RewriteRule ^(.*)$ http://image.simcole.cn/image/$1 [L]
大概解釋下:
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !simcole.cn [NC]
RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !baidu.com [NC]
RewriteCond %{HTTP_REFERER} !bloglines.com [NC]
這部分是判斷是否盜鏈,若是以上條件都成立(即訪問圖片的請求,既不是直接輸入網址,也不是來自simcole.cn,也不是來自zhuaxia.com,也不是來自google.com,也不是來自baidu.com,也不是來自bloglines.com 的話),就執行下列轉向:
RewriteRule .(jpg|gif|png|bmp|swf|jpeg) /image/replace.gif [R,NC,L]
意思是讓全部盜鏈 img 目錄下 jpg、gif、png、bmp、swf、jpeg 文件的網頁,顯示的圖片都用 image 目錄下的 replace.gif 圖片替換掉。注意替換顯示的圖片不要放在設置防盜鏈的 img 目錄下。若是照上面的規則判斷出圖片請求不是盜鏈的,就執行如下轉向:
RewriteRule ^(.*)$ http://image.simcole.cn/image/$1 [L]
意思是對 img 目錄下全部的請求都轉向到目標服務器,好比有個圖片原來的 url 是 http://www.bebecn.com/img/girl.jpg ,如今就會轉到 http://image.bebecn.com/image/girl.jpg 去。固然了你得先把原服務器 img 目錄下的文件通通拷貝到臨時服務器的 image 目錄下,轉向纔會真正可用。起到的效果就是把原服務器圖片下載所佔用的流量通通省下,讓臨時服務器來承受了.
還有第三種:
我在解決plog禁止盜鏈的時候,發現個問題,也算個好方法。
plog把全部資源都本身管理起來,用resserver.php來動態顯示,這樣統一的入口方便添加權限操做。
同時形成上面2種方法沒法使用,由於再也不是apache直接訪問資源文件,而是php經過文件讀取。
所以只能在代碼中作手腳:在讀取資源文件輸出以前,加以下判斷代碼
引用