灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2497回复:0

关于Apache服务器的访问控制

楼主#
更多 发布于:2014-05-12 10:22
Apache的访问控制指对任何资源的任何方式的访问控制。
 
一、基于主机或者IP地址的控制
 
这种访问控制基于访问者的主机名或者IP地址,通过使用 Deny 和 Allow 指令,实现允许或者禁止某个主机访问我们的服务器资源。通常 Order 指令也会一起使用,来定义 Deny 和 Allows 指令起作用的顺序。如果不使用 Order 指令,默认的顺序为 Deny, Allow, 就相当于 Order Deny,Allow。
 
Order 指令和 Allow,Deny 指令配合使用,实现了一个三步控制系统。
 
第一步:根据Order的顺序,将顺序在前的所有的Allow指令或者Deny指令应用于当前请求;也就是说如果是 Order allow,deny ,那么第一步就是将所有的Allow指令应用于当前访问,如果有匹配,那么就允许该访问;如果沒有匹配到一条Allow指令,那么就禁止其访问;
 
第二步:将剩下的另外一个指令的所有语句跟当前请求匹配,如果有匹配就执行相应的访问控制;
 
第三步:如果当前请求没有在前两步匹配到任何指令,就执行 Order 指令中后面的那个指令。
 
下面,通过一个例子理解一下:
 
使指定目录下的资源只让本地访问
     <Directory "/server">
        Order allow,deny
        Allow from 127.0.0.1
    </Directory>
 第一步: 本地的访问匹配了 Allow from 127.0.0.1 这条指令,所以被允许;其他的主机没有匹配到任何一条Allow指令,所以被禁止访问;
第二步:所有访问都没有匹配到 Deny 指令;
 
第三步:没有匹配到任何指令的访问,也就是不是本地的访问,按照 Order 指令,执行后面的 deny 的指令,所以被禁止访问;
 
二、根据环境变量的访问控制
 
这种方式可以通过 Allow from env= 或者 Deny from env= 语法实现,比如只允许使用火狐浏览器的客户访问:
     <Directory "/server">
        SetEnvIf User-Agent "Firefox" ff=1
        Order allow,deny
        Allow from env=ff
    </Directory> 三、使用 mod_rewrite 实现访问控制
通过 mod_rewrite 指令的 [F] 标志,可以基于任何的标准对一个资源实现访问控制。
 
比如,我希望早八点到晚六点的时候才能访问任何资源,我就可以这样:
 RewriteEngine On
RewriteCond %{TIME_HOUR} >20 [OR]
RewriteCond %{TIME_HOUR} <07
RewriteRule ^/fridge - [F]  这样的话,晚上八点以后到早上7点,都会返回 403

喜欢0 评分0
游客

返回顶部