前言:如果你有网站或服务配置在cloudflare,一定免不了被扫描和恶意攻击,而配置Cloudflare的自定义安全规则可避免这些问题,
进入https://dash.cloudflare.com 官网,点击安全规则,选择创建规则,选择自定义规则,然后点击编辑表达式

下面是 3 套可直接复制粘贴配置 的 Cloudflare 自定义安全规则表达式
1:纯静态站(推荐动作:Block)
(
http.request.method ne "GET"
and http.request.method ne "HEAD"
)
or
(
lower(http.request.uri.path) in {
"/.env" "/.env.local" "/.env.dev" "/.env.prod" "/.env.production"
"/.git/config" "/.git/HEAD" "/.git/index"
"/.svn/entries" "/.hg/store"
"/.ds_store" "/.htaccess" "/.htpasswd"
"/composer.json" "/composer.lock"
"/package.json" "/package-lock.json" "/yarn.lock" "/pnpm-lock.yaml"
"/id_rsa" "/id_rsa.pub"
"/phpinfo.php" "/server-status"
"/wp-login.php" "/wp-config.php" "/xmlrpc.php"
"/config.php"
}
)
or
(
starts_with(lower(http.request.uri.path), "/wp-admin")
or starts_with(lower(http.request.uri.path), "/wp-includes")
or starts_with(lower(http.request.uri.path), "/phpmyadmin")
or starts_with(lower(http.request.uri.path), "/pma")
or starts_with(lower(http.request.uri.path), "/admin")
or starts_with(lower(http.request.uri.path), "/cgi-bin")
or starts_with(lower(http.request.uri.path), "/.git")
or starts_with(lower(http.request.uri.path), "/.svn")
or starts_with(lower(http.request.uri.path), "/.hg")
)
or
(
lower(http.request.uri.path) contains "../"
or lower(http.request.uri.path) contains "..%2f"
or lower(http.request.uri.path) contains "%2e%2e%2f"
or lower(http.request.uri.path) contains "%2f..%2f"
or lower(http.request.uri.path) contains "%5c..%5c"
)
or
(
lower(http.user_agent) contains "sqlmap"
or lower(http.user_agent) contains "acunetix"
or lower(http.user_agent) contains "nikto"
or lower(http.user_agent) contains "masscan"
or lower(http.user_agent) contains "nmap"
or lower(http.user_agent) contains "zgrab"
or lower(http.user_agent) contains "gobuster"
or lower(http.user_agent) contains "dirbuster"
or lower(http.user_agent) contains "feroxbuster"
or lower(http.user_agent) contains "wpscan"
)
or
(
http.user_agent eq ""
or len(http.user_agent) lt 8
)
说明
- 非 GET/HEAD 拦截块
目的:把“写入型攻击面”从边缘层直接砍掉。静态站正常只读;出现 POST/PUT/DELETE 等,通常是扫描器在试:上传、RCE、框架路由、表单打点、CORS/OPTIONS 探测等。
拦截方向:阻断自动化探测 + 阻断尝试写入/提交的攻击流量。
敏感文件精确命中块(
in {...})
目的:阻断信息泄露类探测。.env(密钥/配置)、/.git//.svn//.hg(源码与历史)、依赖锁文件(版本指纹)、phpinfo.php/server-status(环境指纹)、WP 关键入口(被大规模字典扫描)。
拦截方向:阻断扫描字典命中 → 防止后续被精准利用。
高风险目录前缀块(
starts_with)
目的:挡“后台/面板/版本库目录级探测”。/admin、/wp-admin、/phpmyadmin、/cgi-bin、/.git* 这类路径是扫描器的默认清单。
拦截方向:阻断爆破前置入口探测与面板探测。
目录穿越块(
contains** 运算符)**
目的:挡路径穿越/LFI 探测(读系统文件、读配置、读源码)。由于没正则,覆盖的是最常见形态(含部分编码)。
拦截方向:阻断“读敏感文件”的探测流量。
扫描器 UA / 空 UA 块
目的:快速降噪。大量自动化工具会带明显 UA(sqlmap、wpscan 等);空/极短 UA 也常见于脚本与探测器。
- 拦截方向:阻断低成本扫描器与脚本请求,降低压力与日志噪声。
注意
- 只要你的静态站有任何表单提交、Webhook、API,第一段会误杀:这种站不要用本规则,改用“混合站 / 内容站规则”。
规则 2:混合站(同域名:静态 + /api + /admin;推荐动作:Managed Challenge)
这套是“实战最常用”的:静态区严、API 区按协议约束、后台区挑战,整体误杀低。
可直接复制的表达式
(
(not starts_with(lower(http.request.uri.path), "/api/"))
and (not starts_with(lower(http.request.uri.path), "/admin"))
and (http.request.method ne "GET" and http.request.method ne "HEAD")
)
or
(
starts_with(lower(http.request.uri.path), "/api/")
and not (http.request.method in { "GET" "POST" "PUT" "PATCH" "DELETE" "OPTIONS" })
)
or
(
starts_with(lower(http.request.uri.path), "/api/")
and (http.request.method in { "POST" "PUT" "PATCH" })
and not (lower(http.request.headers["content-type"][0]) contains "application/json")
)
or
(
starts_with(lower(http.request.uri.path), "/admin")
and not cf.client.bot
)
or
(
lower(http.request.uri.path) in {
"/.env" "/.env.local" "/.env.dev" "/.env.prod" "/.env.production"
"/.git/config" "/.git/HEAD" "/.git/index"
"/.svn/entries" "/.hg/store"
"/.ds_store" "/.htaccess" "/.htpasswd"
"/composer.json" "/composer.lock"
"/package.json" "/package-lock.json" "/yarn.lock" "/pnpm-lock.yaml"
"/id_rsa" "/id_rsa.pub"
"/phpinfo.php" "/server-status"
"/wp-login.php" "/wp-config.php" "/xmlrpc.php"
"/config.php"
}
)
or
(
starts_with(lower(http.request.uri.path), "/wp-admin")
or starts_with(lower(http.request.uri.path), "/phpmyadmin")
or starts_with(lower(http.request.uri.path), "/pma")
or starts_with(lower(http.request.uri.path), "/cgi-bin")
or starts_with(lower(http.request.uri.path), "/.git")
or starts_with(lower(http.request.uri.path), "/.svn")
or starts_with(lower(http.request.uri.path), "/.hg")
)
or
(
lower(http.request.uri.path) contains "../"
or lower(http.request.uri.path) contains "..%2f"
or lower(http.request.uri.path) contains "%2e%2e%2f"
or lower(http.request.uri.path) contains "%2f..%2f"
or lower(http.request.uri.path) contains "%5c..%5c"
)
or
(
lower(http.user_agent) contains "sqlmap"
or lower(http.user_agent) contains "acunetix"
or lower(http.user_agent) contains "nikto"
or lower(http.user_agent) contains "masscan"
or lower(http.user_agent) contains "nmap"
or lower(http.user_agent) contains "zgrab"
or lower(http.user_agent) contains "gobuster"
or lower(http.user_agent) contains "dirbuster"
or lower(http.user_agent) contains "feroxbuster"
or lower(http.user_agent) contains "wpscan"
)
or
(
http.user_agent eq ""
or len(http.user_agent) lt 8
)
or
(
cf.threat_score gt 20
)
说明
- 静态区方法锁(第一块)
只对“非 /api 且非 /admin”的页面区生效:静态页面只允许 GET/HEAD。
价值:既保护静态区不被乱 POST,又不会误伤 API/后台这种本来就需要 POST 的区域。
拦截方向:阻断静态区写入探测、框架路由探测、上传尝试。
API 方法白名单(第二块)
只允许常规 REST 方法,阻断 TRACE/CONNECT/PROPFIND 等非常规方法探测。
拦截方向:阻断网关/代理差异探测与奇技淫巧的探测请求。
API 写操作强制 JSON(第三块)
你的 API 写入若规范化为 JSON,这块可以过滤掉大量垃圾表单提交、multipart 上传探测。
拦截方向:阻断“非预期内容类型”的低成本攻击脚本。
后台区挑战(第四块)
not cf.client.bot 的作用是让已识别的“好 Bot”不被挑战;其余访问后台触发挑战/拦截。
拦截方向:显著提高爆破与扫描成本,兼顾真人可用性(比纯 Block 更稳)。
敏感文件/高危目录/穿越/UA/威胁分数(后续块)
这是全站“防扫描外壳”,核心目标是:敏感泄露入口、版本库入口、面板入口、穿越探测、明显扫描器、威胁分数高的请求。
- 拦截方向:压制扫描字典与自动化攻击前置流量,减少后端负载与日志。
注意
- 如果你的 API 支持
application/x-www-form-urlencoded或multipart/form-data,第三块会误杀;那就删掉第三块或加白名单路径。
3:WordPress 站(推荐动作:Managed Challenge)
这套不靠正则,专打 WP 常见爆破/探测入口,配置后立即见效。
(
lower(http.request.uri.path) in {
"/wp-config.php"
"/wp-login.php"
"/xmlrpc.php"
"/.env" "/.env.local" "/.env.prod" "/.env.production"
"/.git/config" "/.git/HEAD" "/.svn/entries"
}
)
or
(
starts_with(lower(http.request.uri.path), "/wp-admin")
or starts_with(lower(http.request.uri.path), "/wp-includes")
)
or
(
starts_with(lower(http.request.uri.path), "/phpmyadmin")
or starts_with(lower(http.request.uri.path), "/pma")
)
or
(
lower(http.request.uri.path) contains "../"
or lower(http.request.uri.path) contains "%2e%2e%2f"
or lower(http.request.uri.path) contains "%2f..%2f"
)
or
(
lower(http.user_agent) contains "wpscan"
or lower(http.user_agent) contains "sqlmap"
or lower(http.user_agent) contains "acunetix"
or lower(http.user_agent) contains "nikto"
or lower(http.user_agent) contains "gobuster"
or lower(http.user_agent) contains "dirbuster"
)
or
(
http.user_agent eq ""
or len(http.user_agent) lt 8
)
or
(
cf.threat_score gt 20
)
说明
- WP 核心敏感入口块(
wp-login/xmlrpc/wp-config)
/wp-login.php:爆破入口核心命中点。
/xmlrpc.php:历史上被大量用于爆破与放大类调用(是否 Block 取决于你是否需要 Jetpack/APP)。/wp-config.php:正常永远不该被访问到,命中几乎等同“明确恶意”。拦截方向:打掉爆破与敏感配置探测。
wp-admin/wp-includes 前缀块
后台目录与核心代码目录探测,常见于漏洞利用前置探测。
拦截方向:提高后台被暴露与被爆破的门槛。
phpMyAdmin/pma 前缀块
WP 站经常被顺带扫描数据库面板;正常不应公网可达。
拦截方向:阻断面板探测与弱口令爆破入口。
穿越块 + 扫描器 UA + 威胁分数
进一步压制“批量扫描 + 注入探测 + 目录枚举”组合流量。
- 拦截方向:减少被持续扫描的强度与频率。



