Apache Limit 指令未按预期工作

Apache Limit 指令未按预期工作

我想使用“限制”来允许仅来自特定网站的 GET 和 POST 访问需要身份验证的页面。我希望对来自特定 IP 的 GET 和 POST 进行身份验证,该 IP 应该无需身份验证即可访问。

<Limit GET POST>
allow from allowableSite.com
</Limit>

这不管用。一切都是未经授权的

<Limit GET POST>
allow from all
</Limit>

这也不起作用。一切仍未授权(401)

唯一能通过身份验证的是这个

<Limit GET POST>
satisfy any
</Limit>

然后,任何 GET 或 POST 都会成功……但这不是我想要的,因为我只希望从某个站点可以访问。而且“允许”没有按预期工作。是否在其他地方配置了导致此行为的某些内容?任何帮助都非常感谢。

答案1

在没有看到更多配置的情况下,这有点困难。由于Satisfy已修复此问题,我猜想存在Require对此位置的应用。该Satisfy any指令使得匹配Allow(与您的源主机)或Require(与您的用户)将允许访问。

使用带有的主机名Allow是初步怀疑;这取决于正向和反向 DNS 对客户端是否完美无缺。我不太清楚您所说的“仅来自某些站点”是什么意思;您需要让指令Allow包含所有允许的客户端系统。如果所有正向和反向 DNS 都不完全符合您指定的要求,那么就会破坏它。

此外,您对 的使用<Limit>取决于是否存在Deny from all块外部的 来限制其他方法。因此,如果 将Order设置为Allow,Deny,则会破坏它。 <LimitExcept>尽可能更好,因为您可以更明确地阻止不需要的方法;<Limit>存在来自更高级别的意外访问的风险。

我将明确定义您可能在其他地方拥有的东西,但我想确保其他地方的某些东西不会破坏它(除了Deny;确保更高层的东西没有多余的东西..):

Order Allow,Deny
# allowed subnet
Allow from 10.5.1.0/24
# allowed host
Allow from 86.12.76.12

AuthType Basic
AuthName "blah"
AuthUserFile /path/to/htpasswd
Require valid-user

Satisfy all

<LimitExcept GET POST>
    Deny from all
</LimitExcept>

相关内容