11.25 配置防盗链,访问控制Directory ,访问控制FilesMatch

谁说我不能喝 提交于 2020-03-02 14:48:19

设置防盗链

为什么要设置防盗链或者在什么情况夏会用到防盗链?
如果你的网站有很多漂亮的图片,比如你网站域名 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>
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!