apache Satisfy 指令有什么作用?

use*_*565 10 deny conf apache-2.2

我偶然发现了一个httpd.conf我无法理解的指令:

<Files ~ "^\.ht">
  Order allow,deny
  Deny from all
  Satisfy All
</Files>
Run Code Online (Sandbox Code Playgroud)

根据文档,我会说这Satisfy没有任何影响,因为没有Allow. 我错了吗?你认为这个指令有什么作用?

She*_*man 6

太长了;
在大多数情况下,这行并不是绝对必要的,因为通常Satisfy All是默认服务器设置。 如果是这种情况,则这条线并不是绝对必要的。

添加该行作为额外的安全性,“以防万一”,服务器配置为使用Satisfy Any设置作为其默认设置。
如果服务器是故意使用该Satisfy Any设置进行设置的,那么您肯定希望通过包含Satisfy All保护文件(例如.htaccess.

我不确定 htaccess 文件是否会覆盖服务器默认的“满足”指令,用于位于或低于某个 htaccess 文件的所有文件夹。

对于在互联网上发布的通用代码,尤其是当它告诉您如何正确保护.htaccess文件时,发布者有责任不对您的服务器设置做出任何可能破坏文档安全的假设。 包含该“额外”行可确保将更安全的设置应用于您的 htacess 文件。对于配置不同的一小组服务器来说,添加该指令可以使代码块 100% 正常工作,而不是让 htaccess 文件暴露出来。

根据apache 文档

Satisfy Any|All:

基于主机的访问限制和基于密码的验证可以同时实现。在这种情况下,Satisfy 指令用于确定两组限制如何相互作用。

...用于<Directory><Files>、 和<Location>部分以及.htaccess

仅当对特定区域的访问受到用户名/密码和客户端主机地址限制时,此指令才有用。在这种情况下,默认行为(全部)是要求客户端通过地址访问限制并输入有效的用户名和密码。使用“任何”选项,如果客户端通过主机限制或输入有效的用户名和密码,则将被授予访问权限。

由于默认值通常Satisfy All(唯一的其他选项是Satisfy Any),因此当您包含该指令时,您可能不会注意到差异。但是,您的服务器配置文件(或?可能是父目录中的 .htaccess 文件?? - 我不确定这是否可能)可能会覆盖服务器默认值。无论哪种方式,Satisfy All一致地添加指令都可以确保应用适当的安全措施。

通过包含该Satisfy All指令,您可以确保这些文件具有更高的安全设置,而与服务器配置中的设置无关。

链接到的文档提到了一些您可能想使用的用例Satisfy Any


Ali*_*bbs 0

我同意你的观点,满足一切就是不做任何事情——没有它,这些文件仍然会被拒绝。

  • 是的 - 由于没有“Allow from”或“Require”条件,因此“Satisfy”在这里并不重要(您无法满足不存在的条件,因此访问被拒绝)。 (2认同)