Apache 的“要求所有授予”真的做什么?

Joh*_*ord 119 permissions access-control-list apache-2.2 apache-2.4

我刚刚将我的 Apache 服务器更新为在 Ubuntu 13.04 下运行的 Apache/2.4.6。我曾经有一个 vhost 文件,其中包含以下内容:

<Directory "/home/john/development/foobar/web">
    AllowOverride All 
</Directory>
Run Code Online (Sandbox Code Playgroud)

但是当我运行时,我得到了一个“禁止。你无权访问 /”

在做了一点谷歌搜索后,我发现要让我的网站再次工作,我需要添加以下行“要求全部授予”,以便我的虚拟主机看起来像这样:

<Directory "/home/john/development/foobar/web">
    AllowOverride All 
    Require all granted
</Directory>
Run Code Online (Sandbox Code Playgroud)

我想知道这是否“安全”并且不会带来任何安全问题。我在 Apache 的页面上读到,这“模仿了以前由“全部允许”和“全部拒绝”指令提供的功能。此提供程序可以采用“授予”或“拒绝”的两个参数之一。以下示例将授予或拒绝访问所有请求。”

但它没有说明这是否是某种安全问题,或者为什么我们现在必须这样做,而过去您不必这样做。

Sha*_*den 102

访问控制配置在 2.4 中发生了变化,如果没有一些更改,旧配置将不兼容。见这里

如果您的旧配置是Allow from all(没有阻止访问服务的 IP 地址),那么Require all granted新的功能是等效的。

  • 我不认为这等同于```全部允许```。你必须“合并” ```Require all grant``` 与其他现有的 ```Require``` 规则。在我的例子中,当盲目地转换配置时,现有的```Require valid-user``` 被忽略了,就像到处推荐的那样。这是可能发生的最糟糕的事情...... (8认同)
  • 更不用说,旧方法非常混乱,早就应该用更明智的方法取代了。 (5认同)
  • 对于如此重大的更改,我希望有某种支持来自动迁移配置文件或至少显示需要更改的所有点。 (5认同)
  • 对 OP 的问题有一个正确的答案会很好。“允许来自所有等价物”不是很令人满意。 (2认同)

Luc*_*ini 26

我知道这是一篇旧帖子,但我认为我可以通过我经常使用的功能示例提供更多帮助!

在 apache 2.2 中会是这样:

    <Location />
       Order deny, allow
       allow from all
    </Location>
    <Location /adm>
        Order deny, allow
        deny from all
        allow from myniceip
    </Location>
    <Location /disabled>
        Order deny, allow
        deny from all
    </Location>
Run Code Online (Sandbox Code Playgroud)

在 apache 2.4 中会是这样:

   <Location />
       require all granted
    </Location>
   #Note that you dont need to use require all denied
   #to require only a group of ips.. 
    <Location /adm>
        require ip myniceip
    </Location>
    <Location /disabled>
        Require all denied
    </Location>
Run Code Online (Sandbox Code Playgroud)

使用 htacess 身份验证时要小心,这种新语法可能会做一些不好的和意想不到的事情,如果是这种情况,请阅读:https : //unix.stackexchange.com/questions/413309/apache-2-4-wants-me- to-decide-require-valid-ip-or-require-valid-user你应该没问题!