Celmet = CDN Helmet || CC Helmet
非常建议Celmet用户仔细阅读本文档,并按照说明检查确认Celmet是否正以预期方式生效。
两大核心要素
Celmet可正确识别访客IP
正确识别访客IP是Celmet请求频率限制正常工作的前提,若配置错误,可能导致所有正常访客被认为是同一个人(例如127.0.0.1)从而触发限制阻断访问,还可能被恶意用户通过伪造X-Fowarded-For绕过限制进行流量攻击。
确认步骤1:使用浏览器访问Celmet状态查看页面,检查Client IP是否与自己的真实IP一致。
确认步骤2:使用工具伪造X-Fowarded-For请求Celmet状态查看地址(例如:curl -H "X-Forwarded-For: 192.168.1.1" https://yourdomain/yourpath),检查返回的Client IP是否与自己的真实IP一致。
浏览器可正常缓存静态资源
若浏览器无法缓存静态资源,用户刷新页面或打开引用相同资源的其他页面时,浏览器会发起重复请求,导致CDN流量消耗增加。
确认方式:浏览器打开引用了Celmet静态资源的页面,按F12打开开发者工具,点击网络(Network),刷新浏览器页面,检查静态资源的Size栏状态是否为cached
部分浏览器对刷新的处理策略更激进,即使服务端缓存配置正确,用户点击刷新按钮时仍会重新发起请求,此时可更换为点击页面超链接的方式进行验证。
局限性
攻击防护
Celmet作为OSI 7层应用,得益于其自身极简的设计通常不会受到6层攻击的影响,但无法防护1、3、4层的DDoS攻击。
当Celmet被CC攻击时,核心功能是最大程度降低后端CDN的流量损失,做到风险可控,但无法避免自身WEB服务的响应延迟或Down机。
对于直接针对CDN服务进行的waf或https请求次数攻击,仍然可能导致用户的巨大损失。
好消息是一些CDN服务商逐渐学会站在用户的角度思考问题,例如腾讯云新推出的EdgeOne产品,采用“干净流量”计费模式,“无需”(事实上仍然会被有针对性的DDoS打穿,请配置Celmet和URL鉴权,再配置用量封顶和余额预警)担心预期外高额账单。
全站防护
鉴于Celmet的工作原理,仅适用于网站静态资源,无法进行全站防护。
M3U8支持
当前版本的Celmet无法直接对m3u8资源内嵌的ts资源进行防护,虽然部分CDN服务商提供M3U8改写功能,但通常需要设置较大的鉴权有效时长(直播例外),这与防刷流量相悖。
需要在引用m3u8资源的web程序中进行二次开发才能搭配Celmet实现对ts资源的防护。
SEO影响
理论上302跳转不会造成权重损失,但对于流量来源依赖搜索引擎图片搜索的图片类站点,请慎重使用。