.htaccess 仅允许来自具有指定 X-Forward-For IP 的 Cloudflare

.htaccess 仅允许来自具有指定 X-Forward-For IP 的 Cloudflare

我想允许人们从指定的 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-ForIP列表而不是仅指定一个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 地址。(请记住转义点。)

相关内容