1

我正在使用以下语法从我的 .htaccess 文件中阻止一些 IP:

DirectoryIndex index.php
order allow,deny
deny from 17.18.19.0
deny from 18.17.19.1
allow from all

现在我不确定我是否可以使用它:

DirectoryIndex index.php
order allow,deny
deny from 18.17.19.1
allow from all
deny from 18.15.19.1
allow from all
deny from 18.18.19.1
allow from all

所以我可以重复这个结构吗?

deny from x.x.x.x
allow from all

我为什么要问?因为我发现 php 脚本只是在文件末尾追加拒绝,我不确定我是否需要“全部允许”行。

可以这样吗?

DirectoryIndex index.php
order allow,deny
allow from all
deny from 17.18.19.0
deny from 18.17.19.1
deny from ... etc.
4

1 回答 1

2

首先,这个文档页面很好地解释了一些事情。

以下引用来自mod_authz_host 的文档

Order 指令与 Allow 和 Deny 指令一起控制三通访问控制系统。第一遍处理所有 Allow 或所有 Deny 指令,由 Order 指令指定。第二遍解析其余指令(拒绝或允许)。第三遍适用于与前两遍都不匹配的所有请求。

请注意,所有 Allow 和 Deny 指令都会被处理,这与典型的防火墙不同,后者仅使用第一个匹配项。最后一个匹配是有效的(也不同于典型的防火墙)。此外,行在配置文件中出现的顺序并不重要——所有 Allow 行都作为一个组处理,所有 Deny 行都被视为另一组,并且默认状态被单独考虑。

换句话说,如果你有Order Allow,Deny,它将首先处理所有Allow指令,然后是所有Deny指令。您可能会发现有 1 个Allow from all或 100 个Allow from all指令并不重要。最终结果是一样的,但是如果有 100 个指令,您的服务器将需要更多时间处理。然后它将处理所有拒绝指令并在需要时覆盖您刚刚授予的权限。

因此,您只需要一个Order Allow,Deny指令和一个Allow from all指令。无论您使用什么脚本,都可以Deny在它认为合适的时候附加指令,一切都会按预期工作。

于 2014-06-28T13:54:03.447 回答