关于Apacheserver的訪问控制

Apache的訪问控制指对不论什么资源的不论什么方式的訪问控制。

一、基于主机或者IP地址的控制

这样的訪问控制基于訪问者的主机名或者IP地址,通过使用 Deny 和 Allow 指令。实现同意或者禁止某个主机訪问我们的server资源。通常 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

时间: 2024-11-08 18:26:21

关于Apacheserver的訪问控制的相关文章

CCNP路由实验之十四 路由器的訪问控制ACL

?? ACL(Access Control List,訪问控制列表) 是路由器接口的指令列表,用来控制port进出的数据包.ACL适用于全部的路由协议,如IP.IPX.AppleTalk等.这张表中包括了匹配关系.条件和查询语句,表仅仅是一个框架结构.其目的是为了对某种訪问进行控制.訪问控制列表使用包过滤技术,在路由器上读取第三层及第四层包头中的信息如源地址,目的地址,源port.目的port等,依据预先定义好的规则对包进行过滤.从而达到訪问控制的目的,该技术初期仅在路由器上支持.如今已经支持三

C++类訪问控制及继承

一.C++类的訪问控制有三类:public,protected和private. 类訪问控制符 类成员可被哪些对象訪问 public 1.类的成员函数.2.类对象.3.友元.4.子类成员函数 protected 1.类的成员函数.2.友元.3.子类成员函数 private 1.类的成员函数.2.友元 二.C++类的继承 继承方式也有三种:public,protected和private. 继承之后,基类成员的可訪问性会发生变化,例如以下表: public继承 基类 public protecte

JAVA基础之訪问控制权限(封装)

包:库单元 1.当编写一个Java源码文件时.此文件通常被称为编译单元(有时也被称为转译单元). 2.每一个编译单元都必须有一个后缀名.java,而在编译单元内则能够有一个public类,该类名称必须和文件的名称同样. 3.每一个编译单元仅仅能有一个public类,否则编译器就不会接受. 4.假设在该编译单元之中还有额外的类的话,那么在包之外的世界是无法看见这些类的,由于它们不是public类. 代码组织 xx.java编译生成xx.class package语句必须是文件除凝视以外的第一句程序

Phalcon 訪问控制列表 ACL(Access Control Lists ACL)

Phalcon在权限方面通过 Phalcon\Acl 提供了一个轻量级的 ACL(訪问控制列表). Access Control Lists (ACL) 同意系统对用户的訪问权限进行控制,比方同意訪问某些资源而不同意訪问其他资源等. 这里我们建议开发人员了解一些关于ACL的技术. ACL有两部分组成即角色和资源. 资源即是ACL定义的权限所依附的对象. 角色即是ACL所字义的请求者的身份,ACL决定了角色对资源的訪问权限.同意訪问或拒绝訪问. 创建 ACL(Creating an ACL)? 这

[Nginx]用Nginx实现与应用结合的訪问控制 - 防盗链

应用场景:图片等资源须要设置权限,如:仅仅有认证过的用户才干訪问自己的图片. 解决的方法:使用Nginx的防盗链模块http_secure_link能够实现,该模块默认情况下不包括.故在安装时要加上--with-http_secure_link_module 该模块依据两个參数控制权限訪问,一个是过期时间(即该链接在这个时间之前可訪问,过期后无法訪问),该參数主要出于安全考虑. 还有一个是通过md5算法算出来的KEY,一般通过uri计算 举例: server { listen 80; serve

C++ 訪问控制权限图解

基类訪问权限 类继承方式 子类訪问权限           public   public   protected public protected   private   No Access   public   protected   protected protected protected   private   No Access   public   private   protected private private   private   No Access          

IIS中遇到无法预览的问题(HTTP 错误 401.3 - Unauthorized 因为 Web server上此资源的訪问控制列表(ACL)配置或加密设置,您无权查看此文件夹或页面。)

在IIS中  依次运行例如以下操作: 站点--编辑权限--共享(为了方便能够直接将分享对象设置为everyone)--安全(直接勾选 everyone )--应用--确定.

使用Hadoop ACL 控制訪问权限

使用Hadoop ACL 控制訪问权限 一.HDFS訪问控制 hdfs-site.xml设置启动acl <property> <name>dfs.permissions.enabled</name> <value>true</value> </property> <property> <name>dfs.namenode.acls.enabled</name> <value>true&l

java中訪问修饰符

较之c++ 中 public,proctected, private 三种訪问控制, java多了默认訪问控制. java中四种訪问控制权限 简单描写叙述为一下四句: 1)private 仅本类可见 (同c++) 2)默认 对本包可见/包内訪问 (c++没有) 3)protected 对本包和全部子类可见 (c++中没有本包概念.较 默认訪问 能够被在其它包下的子类訪问) 4)public 对全部类可见 (同c++) 当中1)4)与c++同样,对2)3)做简单測试 3)protected 对本包