设置防盗链
为什么要设置防盗链或者在什么情况夏会用到防盗链?
如果你的网站有很多漂亮的图片,比如你网站域名 www.123.com,图片地址为 www.123.com/image/111.jpg,那么其它人就可以直接把这个地址放到他自己的网站上,他的用户可以直接从他网站查看这张图片,而实际图片是从你的网站访问的,所产生的带宽消耗对你没有任何意义,应该对这些图片限制一下,凡是在第三方站点上,严禁访问你站点的图片,如何配置呢?
方法:
• 通过限制referer来实现防盗链的功能
• 配置文件增加如下内容
<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
解释:nocase不区分大小写
^$空referer,直接访问图片路径
访问控制directory
网站受到攻击,可以将IP加入黑名单,禁止访问我们的网站
编辑虚拟主机配置文件
[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 精准度高,所以以它为准。
访问控制filesmatch
针对请求的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>
来源:oschina
链接:https://my.oschina.net/u/3866516/blog/1923770