配置防盜鏈,我們就必須先理解盜鏈的實現原理,在HTTP協議中,有一個表頭字段叫referer,採用URL的格式來表示從哪兒鏈接到當前的網頁或文件。換句話說,通過referer,網站可以檢測目標網頁訪問的來源網頁,如果是資源文件,則可以跟蹤到顯示它的網頁地址。有了referer跟蹤來源就好辦了,這時就可以通過技術手段來進行處理,一旦檢測到來源不是本站即進行阻止或者返回指定的頁面。
在apache虛擬主機配置文件加入以下代碼:
vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
SetEnvIfNoCaseReferer ".*\.1\.com" local_ref
SetEnvIfNoCaseReferer ".*\.a\.com" local_ref
SetEnvIfNoCaseReferer ".*\.b\.com" local_ref
SetEnvIfNoCaseReferer "^$" local_ref
<filesmatch"\.(txt|doc|mp3|zip|rar|jpg|gif)">
OrderAllow,Deny
Allowfrom env=local_ref
</filesmatch>
檢測:使用curl -e來看referer是否生效
# curl -uaming:123456 -e "http://www.baidu.com/asdasdas/asdasd.php"-x127.0.0.1:80 www.1.com/1.txt -I
HTTP/1.1 403 Forbidden
Date:Tue, 09 Jun 2015 14:15:17 GMT
Server:Apache/2.4.12 (Unix) PHP/5.5.5
Content-Type:text/html; charset=iso-8859-1
[root@linux-lampapache2]# curl -u aming:123456 -e "http://www.a.com/aaa" -x127.0.0.1:80www.1.com/1.txt -I
HTTP/1.1 200 OK
Date:Tue, 09 Jun 2015 14:15:47 GMT
Server:Apache/2.4.12 (Unix) PHP/5.5.5
Last-Modified:Tue, 09 Jun 2015 13:49:38 GMT
ETag:"b-51816078dfa72"
Accept-Ranges:bytes
Content-Length:11
Cache-Control:max-age=0
Expires:Tue, 09 Jun 2015 14:15:47 GMT
Content-Type:text/plain
當referer引用頁是referer所指定的地址之外都會被排除.