如何在 Apache 2.4 上阻止 .htaccess 中的 IP

Oud*_*din 7 .htaccess apache-2.4

我已经升级了 Apache 2.4 并想阻止一个 Ip 这可以通过在 Apache 2.2 上的 .htaccess 中使用以下内容来完成

Order Deny,Allow
Deny from 50.62.136.183
Run Code Online (Sandbox Code Playgroud)

但是,如何在 Apache 2.4 上的 .htaccess 中实现相同的目标

小智 10

这是.htaccess文件的另一种可接受的语法:

<RequireAll>
Require all granted
Require not ip 50.62.136.183
</RequireAll>
Run Code Online (Sandbox Code Playgroud)

建议在 2.4 中使用此语法,因为 order-deny 语法并不总是有效,可以在这里看到http://httpd.apache.org/docs/2.4/upgrading.html

  • 这不是真的。这只是做同一件事的不同方式,所以不要指责别人。 (2认同)

小智 9

Apache 2.4 在授权用户的方式上做了一些重大改变。

Apache 2.4 中的授权组件现在可以使用以前仅可用于身份验证的 Require 语法。此更改简化了定义授权顺序的方式。2.4 之前的规则集可能会变得非常复杂。2.4 中的规则更符合逻辑,指定默认值,然后指定异常。

您要求默认接受流量,但希望阻止特定 IP,规则如下所示:

Require all granted
Require not ip 50.62.136.183
Run Code Online (Sandbox Code Playgroud)

此规则将设置接受所有 IP 的默认策略,除了来自 111.111.111.111 IP 地址的任何请求。

Apache 2.4 前后示例

阿帕奇 2.2

<files somefile.php>
  order allow,deny
  deny from 50.62.136.183
</files>
Run Code Online (Sandbox Code Playgroud)

阿帕奇 2.4

<Files somefile.php>
Require all granted
Require not ip 50.62.136.183
</Files>
Run Code Online (Sandbox Code Playgroud)

不要忘记阻止访问您的 .htaccess 文件或快速谷歌搜索我的网站易受攻击。我已经包含了 2.4 之前和 2.4 之后的配置。

阿帕奇 2.2

# Prevent .htaccess files from being spidered or viewed via a web browser.
<FilesMatch "^\.ht">
  Order allow,deny
  Deny from all
  satisfy all
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)

阿帕奇 2.4

# Prevent .htaccess files from being spidered or viewed via a web browser.
<Files ".ht*">
  Require all denied
</Files>
Run Code Online (Sandbox Code Playgroud)


小智 3

访问控制的配置已更改,您可以在http://httpd.apache.org/docs/2.4/upgrading.html#access中阅读,因此您应该使用 Require 指令:

Require all granted
Require not ip 50.62.136.183
Run Code Online (Sandbox Code Playgroud)

如果您将其添加到您的.htaccess文件(或Directory部分)中,它应该按照您的要求工作。