添加Mutiple Fhitelist IP绕过HTACCESS受保护的目录



我目前正在使用HTACCESS弹出窗口保护我的管理员,但我为自己的IP添加了白名单。这很棒:

<If "%{REMOTE_ADDR} != '84.x.x.x'">
AuthGroupFile /dev/null
AuthType Basic
AuthUserFile /home/x/domains/my.x.com/.htpasswd/public_html/x/.htpasswd
AuthName "no public access"
require valid-user
ErrorDocument 401 "Unauthorized Access"
</If>

现在还有其他两个我想白名单的地方。不幸的是,我无法找出添加多个IP的语法。大多数示例似乎使用旧语法而没有if语句。

有人知道我如何重写此代码以包括2个IP?

我想您想使用'in'operator:您可以在这里找到一些示例:

https://httpd.apache.org/docs/2.4/en/expr.html

    # Check a HTTP header for a list of values
<If "%{HTTP:X-example-header} in { 'foo', 'bar', 'baz' }">
    Header set matched true
</If>

我找到了一种替代解决方案:

Order deny,allow
Deny from all
AuthName "no public access"
AuthUserFile /home/x/domains/my.x.com/.htpasswd/public_html/test/.htpasswd
AuthType Basic
Require valid-user
ErrorDocument 401 "Unauthorized Access"
#location1
Allow from 84.x.x.x
#location2
Allow from 185.x.x.x
Satisfy Any

它使用的是完全不同的语法,因此这不是我最初问题的100%答案。但是,它确实允许在密码保护目录上将多个IP列入白色。

对不起新帐户/因此无法在正确答案中添加注释。

先前的答案中只有一个错误。由于Magistar想要捕获,如果不是这些IP的Félicien的答案(请注意!(:

# Check a HTTP header for a list of values
<If  "! %{HTTP:REMOTE_ADDR} in { '84.x.x.x', '85.x.x.x' } ">
    Header set matched true
</If>
此外
<If "!(%{REMOTE_ADDR} = '84.x.x.x' && %{REMOTE_ADDR} = '85.x.x.x')">

它可能没有起作用的原因是,整个表达式应该在一个大引用的大引用之间。

我确实找到了félicien的答案,然后再整洁,然后多个表达式。

可以使用基于正则表达式比较来实现这一点:

<If "! %{REMOTE_ADDR} =~ m#(85.x.x.x)|(86.x.x.x)#">

这允许将地址与具有巨大灵活性的模式进行比较。

最新更新