0

我有一个容易受到攻击的页面,因此,为了减少匿名攻击,我在网上找到的.htaccess中使用了这段代码:

# BLOCK PROXY VISITS
<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteCond %{HTTP:VIA}                 !^$ [OR]
 RewriteCond %{HTTP:FORWARDED}           !^$ [OR]
 RewriteCond %{HTTP:USERAGENT_VIA}       !^$ [OR]
 RewriteCond %{HTTP:X_FORWARDED_FOR}     !^$ [OR]
 RewriteCond %{HTTP:PROXY_CONNECTION}    !^$ [OR]
 RewriteCond %{HTTP:XPROXY_CONNECTION}   !^$ [OR]
 RewriteCond %{HTTP:HTTP_PC_REMOTE_ADDR} !^$ [OR]
 RewriteCond %{HTTP:HTTP_CLIENT_IP}      !^$
 RewriteRule .* - [F]
</IfModule>

我的问题是一位广告商在他的公司内部使用代理,因此无法访问我的页面。我对正则表达式一无所知,即使我认为当我看到它时我可以认出它,例如“哦,看一个正则表达式”。我认为上述条件是正则表达式,但我不知道以某种方式改变它们,即只有来自该特定静态 IP 的代理访问不被禁止。

如果可能的话,我该如何实现?先感谢您!

编辑:正如我建议的那样,我在serverfault.com上提出了这个问题。点击此链接了解更多信息。

4

1 回答 1

0

如果此客户始终具有相同的特定 IP,您可以使用 a 检测到这一点RewriteCond %{REMOTE_ADDR}并停止任何进一步的重写

RewriteEngine on

# new rule
RewriteCond %{REMOTE_ADDR} =1.2.3.4
RewriteRule ^ - [L]

# old proxy rule
RewriteCond %{HTTP:VIA}                 !^$ [OR]
...
...
RewriteCond %{HTTP:HTTP_CLIENT_IP}      !^$
RewriteRule .* - [F]

您必须将此规则放在开头,否则其他规则将拒绝该请求。第一条规则允许 IP 1.2.3.4 看到您的网站,第二条规则像以前一样阻止。所有其他客户端都不会受到影响,并且可以像以前一样看到所有内容。

于 2013-04-16T13:28:59.030 回答