Web “阿帕奇”;订单“;指令原理

Web “阿帕奇”;订单“;指令原理,web,apache,httpd.conf,Web,Apache,Httpd.conf,听起来,“命令拒绝,允许”和“命令允许,拒绝”之间的基本区别在于前者是允许的(“允许”指令优先,默认情况下允许任何人),而后者是禁止的(“拒绝”指令优先,默认情况下不允许任何人) 假设我理解正确,这是非常不直观的,我想知道为什么Order指令是这样工作的。基本原理是什么?例如,这是否是某人对表示访问控制的好方法的想法?以不同的顺序处理请求在计算上是否有利?这更多是为了扩展吗?如果您正在执行非平凡的访问控制,那么有时两个规则会匹配同一个请求。当它们发生冲突时(即:一个说“拒绝”,另一个说“允许”)

听起来,“命令拒绝,允许”和“命令允许,拒绝”之间的基本区别在于前者是允许的(“允许”指令优先,默认情况下允许任何人),而后者是禁止的(“拒绝”指令优先,默认情况下不允许任何人)


假设我理解正确,这是非常不直观的,我想知道为什么Order指令是这样工作的。基本原理是什么?例如,这是否是某人对表示访问控制的好方法的想法?以不同的顺序处理请求在计算上是否有利?这更多是为了扩展吗?

如果您正在执行非平凡的访问控制,那么有时两个规则会匹配同一个请求。当它们发生冲突时(即:一个说“拒绝”,另一个说“允许”),你需要某种方式来决定哪一个优先。或者,在某些情况下,没有规则匹配,您需要一个默认策略来覆盖这些情况

在Apache中,它被称为Order,工作原理与之类似,主要是因为Apache决定如何处理访问控制。在处理这些规则的方式上,规则分为“允许”规则和“拒绝”规则。当请求传入时,概念上的处理过程如下:

  • 如果顺序是
    Deny,allow
    ,Apache首先运行拒绝规则;如果顺序是
    allow,Deny
    ,Apache首先运行允许规则
  • Apache运行其他规则
  • 最后一场比赛获胜。如果没有匹配项,则
    顺序中的最后一个操作是策略
  • (显然,这个过程有一些优化。假设在
    允许,拒绝
    中,如果允许规则不匹配,Apache甚至不需要拒绝规则,因为它已经拒绝了请求。同样,如果在
    拒绝,允许
    中没有匹配的拒绝规则,则请求被允许(因为没有什么可以阻止它)。但是从概念上讲,你可以考虑两组规则的运行。
    我想可以给每个规则一个优先级参数或什么的,让管理员决定给每件事赋予什么优先级。坦白说,如果你只想知道是允许还是拒绝某件事,那就不值得那么麻烦了。因为这很容易通过给“允许”或“拒绝”来实现规则有机会根据处理顺序覆盖其他规则,这就是他们所做的。但是不同的站点可能会要求其他规则集具有优先级,因此他们将其设置为可配置的。

    感谢您的回复,这有助于了解预期用途。我可以看出这在某些情况下是多么有用,但我仍然有tr在一个用例中,切换“Order”指令胜过简单地优先于第一个“Allow”或“Deny”在作用域中遇到指令。后一种方法似乎更灵活、更直观。但问题是……当您有来自不同作用域的规则时会发生什么?如果您有……例如……全局默认策略、站点特定重写、位置特定规则、目录特定规则、子目录,则直观性会大大降低保守党的规则,.htaccess文件中的内容等等。不管你用什么方法处理它,你都会破坏别人的用例。除非你给他们一种方法,指定这些规则在给定网站上的应用顺序……哦,等等……:)结果是,
    顺序
    是最简单有效的方法之一。我仍然持怀疑态度,但我认为这是正确的答案。谢谢