配置防盗链,我们就必须先理解盗链的实现原理,在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所指定的地址之外都会被排除.
转载于:https://blog.51cto.com/googgoogstudy/1681080