阻止来自特定IP的POST请求

时间:2019-01-10 00:13:08

标签: .htaccess mod-rewrite

我尝试多紧要紧。我的htaccess没有任何意义。我想阻止来自特定IP的POST请求。

此代码有效并阻止所有POST请求:

<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_METHOD} POST
RewriteRule .* – [F,L]
</IfModule>

我只需要将条件添加到黑名单IP中,如下所示:

<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REMOTE_ADDR} =123.123.123.123 [OR]
RewriteCond %{REMOTE_ADDR} =222.222.222.222 [OR]
RewriteCond %{REMOTE_ADDR} =111.111.111.111
RewriteRule .* – [F,L]
</IfModule>

在纸上它应该起作用,但实际上却没有。当我从列入黑名单的IP之一(例如123.123.123.123)发布信息时,该阻止不会触发。

我的代码有什么问题?

在您问我不能使用“允许”,“拒绝”之前,是的,我使用的是真实IP地址来运行测试。我只是不想发布它们:P

1 个答案:

答案 0 :(得分:1)

您需要转义IP地址中的点。

  

”。匹配任何单个字符

您可以尝试以下代码:

<IfModule mod_rewrite.c>
    RewriteCond %{REQUEST_METHOD} POST
    RewriteCond %{REMOTE_ADDR} ^123\.123\.123\.123$ [OR]
    RewriteCond %{REMOTE_ADDR} ^222\.222\.222\.222$ [OR]
    RewriteCond %{REMOTE_ADDR} ^111\.111\.111\.111$
    RewriteRule .* – [F,L]
</IfModule>

参考:https://httpd.apache.org/docs/2.4/rewrite/intro.html#regexvocab