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