Я использую CloudFlare в общей среде и пытаюсь помочь заблокировать пользователей, не относящихся к CloudFlare, которые обходят мой исходный IP-адрес. При загрузке веб-страницы я вижу заголовок сервера: «cloudflare». Итак, я попробовал следующий код htaccess и сразу получил 403.
RewriteCond %{HTTP:server-header} !^cloudflare$ [NC]
RewriteRule ^ - [F]
RewriteCond %{HTTP:x-server-header} !^cloudflare$ [NC]
RewriteRule ^ - [F]
Я также пробовал варианты кода, и ничего не работает.
Блокировка запросов на основании наличия этого конкретного заголовка - плохая идея. Причина в том, что любой может подделать этот заголовок, если захочет. Это может быть сохранено в секрете, и это даже не так уж и неясно.
Лучшим подходом было бы разрешить только запросы, сделанные с IP-адресов CloudFlare. Список IP-адресов CloudFlare можно найти здесь: https://www.cloudflare.com/ips/
Пример только для IPv4:
order deny,allow
deny from all
allow from 173.245.48.0/20
allow from 103.21.244.0/22
allow from 103.22.200.0/22
allow from 103.31.4.0/22
allow from 141.101.64.0/18
allow from 108.162.192.0/18
allow from 190.93.240.0/20
allow from 188.114.96.0/20
allow from 197.234.240.0/22
allow from 198.41.128.0/17
allow from 162.158.0.0/15
allow from 104.16.0.0/12
allow from 172.64.0.0/13
allow from 131.0.72.0/22
Я только что нашел два решения.
Один из них - использовать:
RewriteEngine On
RewriteCond %{HTTP:CF-IPCountry} ^$
RewriteRule ^ - [F,L]
Другой здесь:
https://community.cloudflare.com/t/stop-cloudflare-bypassing-on-shared-hosting/91203