访问控制 – Directory(目录)

核心配置文件内容:vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
  <Directory /data/wwwroot/111.com/admin/>
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </Directory>

order用来定义顺序,如果先deny先执行deny的语句,如果先allow先执行allow的语句。从头走到尾,最后的生效。

127.0.0.1的没问题,其他IP不行 curl测试状态码为403则被限制访问了


访问控制 – FilesMatch(匹配文件名或访问的链接)

1、核心配置文件内容

<Directory /data/wwwroot/www.123.com>
    <FilesMatch  "admin.php(.*)">
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </FilesMatch>
</Directory>

2、结果 curl -x127.0.0.1:80 'http://111.com/admin.php?sdef' -I 404:允许访问,但是不存在


访问控制 – 禁止php解析

1、前提准备: 2、核心配置文件内容

    <Directory /data/wwwroot/111.com/upload>
        php_admin_flag engine off
    </Directory>

若不加下面的filesmatch就会获取到PHP文件的源代码 3、结果: curl测试时直接返回了php源代码,并未解析

加filesmatch结果:

访问控制 – user_agent 限制user_agent(cc攻击用到)

user_agent可以理解为浏览器标识 1、核心配置文件内容

   <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteCond %{HTTP_USER_AGENT}  .*curl.* [NC,OR]     //NC是忽略大小写,OR是或者
        RewriteCond %{HTTP_USER_AGENT}  .*baidu.com.* [NC]
        RewriteRule  .*  -  [F]
    </IfModule>

rewriterule后面的F是forbidden的意思 2、结果

curl -A "123123" (自定义)指定user_agent

curl -A 指定user_agent curl -e 指定referer,必须"http://"开头