为何要设置防盗链或者在什么状况夏会用到防盗链?
若是你的网站有不少漂亮的图片,好比你网站域名 www.123.com,图片地址为 www.123.com/image/111.jpg,那么其它人就能够直接把这个地址放到他本身的网站上,他的用户能够直接从他网站查看这张图片,而实际图片是从你的网站访问的,所产生的带宽消耗对你没有任何意义,应该对这些图片限制一下,凡是在第三方站点上,严禁访问你站点的图片,如何配置呢?php
方法:
• 经过限制referer来实现防盗链的功能html
• 配置文件增长以下内容linux
<Directory /data/wwwroot/www.123.com> SetEnvIfNoCase Referer "http://www.123.com" local_ref SetEnvIfNoCase Referer "http://123.com" local_ref SetEnvIfNoCase Referer "^$" local_ref <filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)"> Order Allow,Deny Allow from env=local_ref </filesmatch> </Directory>
测试:
• curl -e "http://www.aminglinux.com/123.html" 自定义referer
curl -e "http://111.com/" -x192.168.88.129:80 111.com/1.jpg -I
apache
解释:nocase不区分大小写
^$空referer,直接访问图片路径vim
网站受到攻击,能够将IP加入黑名单,禁止访问咱们的网站curl
编辑虚拟主机配置文件ide
[root@localhost ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf 加入下面代码; <Directory "data/www"> AllowOverride None Options None Order allow,deny Allow from all Deny from 127.0.0.1 </Directory>
allow 容许 ;deny 禁止
order allow,deny 这里规则看谁在前面谁在后面,和上下不要紧 。测试
不想其余人访问网站中特定的页面,好比管理中心;加入下面代码;网站
<filesmatch "(.*)admin(.*)"> Order deny,allow Deny from all Allow from 127.0.0.1 </filesmatch>
<Directory "data/www"> AllowOverride None Options None Order allow,deny Allow from all Deny from 127.0.0.1 </Directory> <filesmatch "(.*)admin(.*)"> Order deny,allow Deny from all Allow from 127.0.0.1 </filesmatch>
为何配置文件中同时有这两个,就容许127.0.0.1了,那么前面的拒绝就没有用了,是否是说白名单的优先级高于黑名单。
假如 admin.php 被两个配置段都匹配了的话,那就选精准度更高的。
你这两个就是下面这个filesmatch 精准度高,因此以它为准。url
针对请求的URL去限制
这里用到了filesmatch语法,表示匹配的意思。
<Directory /data/wwwroot/www.123.com> <FilesMatch "admin.php(.*)"> Order deny,allow Deny from all Allow from 127.0.0.1 </FilesMatch> </Directory>