Я хочу разрешить людям доступ к моей странице с указанного 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.
.htaccess
и безопасно? X-Forwarded-For
. Как разрешить список IP вместо указанного IP из
X-Forward-For
.
У вас может быть несколько директив SetEnvIf
. (?)
Обратите внимание, что xxxx
является регулярным выражением, поэтому вы можете выразить это как (1 \ .1 \ .1 \ .1 | 2 \ .2 \ .2 \ .2 | 3 \ .3 \ .3 \ .3)
, если IP-адресов всего несколько. (Не забывайте избегать точек.)