一次 P0:严格 CSP 和 Cloudflare 邮箱混淆打起来了
2026-10-19
独立审计扫出一个 P0:主站上的联系邮箱,访客看到的是 [email protected],点一下跳到 /cdn-cgi/l/email-protection 直接 404。等于网站上唯一的联系方式是死的。
根因
两件事单独看都没问题,合在一起就炸了:
第一,Cloudflare 默认开了 Scrape Shield 的“邮箱混淆”:边缘把页面里的 hi@yebiguo.com 改写成混淆代码,靠一段解密脚本在访客浏览器里还原,防止爬虫收割邮箱。
第二,主站配了极其严格的 CSP:script-src 'none'——页面上一个脚本都不许执行。
结果:解密脚本被 CSP 当场拦下,邮箱永远停在混淆态。抓包看 HTML 能清楚看到 data-cfemail 和 email-protection 的痕迹。
修复
去 Cloudflare 后台把“Email Address Obfuscation”关掉就行,5 分钟,不用改一行代码。关完实测:HTML 里混淆代码消失,mailto:hi@yebiguo.com 明文可点。
教训:安全头和边缘功能是两套各自为政的系统,叠 buff 之前要想想它们会不会互掐。CSP 越严格,越要检查边缘改写类功能。
顺手修的 P1
同一轮还发现 www.yebiguo.com 根本没做解析。加了条 CNAME(已代理)再配 301 跳到主域名,保留路径和参数。现在手滑输 www 也能到了。