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

设置防盗链

为何要设置防盗链或者在什么状况夏会用到防盗链?
若是你的网站有不少漂亮的图片,好比你网站域名 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


访问控制directory

网站受到攻击,能够将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


访问控制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>
相关文章
相关标签/搜索