Назад | Перейти на главную страницу

.htaccess разрешить только из Cloudflare с указанным IP-адресом X-Forwarded-For

Я хочу разрешить людям доступ к моей странице с указанного IP. Однако я поддерживаю Cloudflare. Единственный способ получить IP-адрес пользователя - от X-Forwarded-For заголовок. Но я не могу доверять X-Forwarded-For, потому что люди могут обойти Cloudflare и получить прямой доступ к IP-адресу моего сервера (предположим, что они могут угадать IP-адрес моего сервера).

Итак, я хочу разрешить список конкретных X-Forwarded-For IP-адреса от Cloudflare. Я знаю список IP от Cloudflare. Вот что у меня получилось. Это правильно?

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.

Резюме вопроса

Как разрешить список IP вместо указанного IP из X-Forward-For.

Вы можете иметь несколько SetEnvIf директивы. (?)

Обратите внимание, что x.x.x.x является регулярным выражением, поэтому вы можете выразить это как (1\.1\.1\.1|2\.2\.2\.2|3\.3\.3\.3) если есть всего несколько IP-адресов. (Не забывайте избегать точек.)