我想允许人们从指定的 IP 访问我的页面。但是,我使用的是 Cloudflare。获取用户 IP 的唯一方法是从X-Forwarded-For
标头获取。但我不能相信X-Forwarded-For
,因为人们可以绕过 Cloudflare 并直接访问我的服务器 IP(假设他们可以幸运地猜出我的服务器 IP)。
因此,我想允许X-Forwarded-For
来自 Cloudflare 的特定 IP 列表。我知道Cloudflare 的 IP 列表。这是我目前得到的结果。对吗?
SetEnvIF X-Forwarded-For "x.x.x.x" AllowIP
<RequireAny>
<RequireAll>
<RequireAny>
Require ip 199.27.128.0/21
Require ip 173.245.48.0/20
Require ip 103.21.244.0/22
Require ip 103.22.200.0/22
Require ip 103.31.4.0/22
Require ip 141.101.64.0/18
Require ip 108.162.192.0/18
Require ip 190.93.240.0/20
Require ip 188.114.96.0/20
Require ip 197.234.240.0/22
Require ip 198.41.128.0/17
Require ip 162.158.0.0/15
Require ip 104.16.0.0/12
Require ip 172.64.0.0/13
</RequireAny>
Require env AllowIP
</RequireAll>
Require ip 127.0.0.1
</RequireAny>
还有一件事。我该如何允许X-Forward-For
IP列表而不是仅指定一个IP。
问题摘要
- 我的
.htaccess
权利和安全吗? - 如何允许 IP 列表而不是指定的 IP
X-Forwarded-For
。
答案1
如何允许 IP 列表而不是指定的 IP
X-Forward-For
。
您可以有多个SetEnvIf
指令。(?)
请注意,这x.x.x.x
是一个正则表达式,因此您可以将其表达为(1\.1\.1\.1|2\.2\.2\.2|3\.3\.3\.3)
只有几个 IP 地址。(请记住转义点。)