阻止除特定标头之外的所有请求

阻止除特定标头之外的所有请求

我在共享环境中使用 CloudFlare,并尝试帮助阻止绕过我的原始 IP 的非 CloudFlare 用户。加载网页时,我看到标头服务器:“cloudflare”。因此,我尝试了以下 htaccess 代码,结果立即出现 403。

RewriteCond %{HTTP:server-header} !^cloudflare$ [NC]
RewriteRule ^ - [F]

RewriteCond %{HTTP:x-server-header} !^cloudflare$ [NC]
RewriteRule ^ - [F]

我也尝试过不同版本的代码,但都不起作用。

答案1

根据此特定标头的存在来阻止请求不是一个好主意。原因是任何人都可以随意伪造该标头。这可以通过隐蔽性归入安全性,但它甚至没有那么隐蔽。

更好的方法是仅允许来自 CloudFlare IP 地址的请求。CloudFlare IP 地址列表可在此处找到: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 

答案2

我刚刚找到了两个解决方案。

一种方法是使用:

RewriteEngine On
RewriteCond %{HTTP:CF-IPCountry} ^$
RewriteRule ^ - [F,L]

另一个在这里:
https://community.cloudflare.com/t/stop-cloudflare-bypassing-on-shared-hosting/91203

相关内容