跳转到内容
搜索文档

Cache Deception Armor

最后更新 查看 MarkdownAgent 设置

Web Cache Deception 攻击

Web Cache Deception 攻击诱骗用户访问看似指向静态资源但实际从源站返回动态、个性化内容的 URL。

当源站将不存在路径的请求视为等同于父路径时,此攻击会生效——例如,当 http://www.example.com/newsfeed 是为每个已认证用户返回不同内容的动态页面,且源站对 /newsfeed/foo.jpg 也返回相同响应时。由于路径以 .jpg 结尾,Cloudflare 默认会缓存该响应。攻击者随后访问同一 URL 并收到该用户个性化内容的缓存副本。

Cache Deception Armor 防护攻击

您可以通过创建缓存规则保护用户免受 Web Cache Deception 攻击。使用此规则,您可以继续缓存静态资源,但规则会验证 URL 的扩展名是否与返回的 Content-Type 匹配。

在上面的 newsfeed 示例中,如果 http://www.example.com/newsfeed 是输出网页的脚本,则 Content-Typetext/html。另一方面,http://www.example.com/newsfeed/foo.jpg 预期 Content-Typeimage/jpeg。当发现可能导致 Web Cache Deception 攻击的不匹配时,Cloudflare 不会缓存该响应。

例外情况

  • 如果返回的 Content-Typeapplication/octet-stream,扩展名无关紧要,因为这通常是向浏览器发出保存而非显示资源的信号。
  • Cloudflare 允许 .jpgimage/webp 提供,或 .gifvideo/webm 提供,以及其他不太可能是攻击的情况。
  • 请记住,Cache Deception Armor 依赖于源站 Cache Control。来自源站的 Cache-Control 标头,或 Edge Cache TTL Cache Rule 可能会覆盖此保护。

启用 Cache Deception Armor

要启用 Cache Deception Armor,您需要先创建缓存规则。请按照以下步骤操作:

  1. 在 Cloudflare 仪表板中,前往 Cache Rules(缓存规则) 页面。

    Go to Cache Rules ↗
  2. 选择 Create rule(创建规则)

  3. When incoming requests match(当传入请求匹配时) 下,定义规则表达式

  4. Then(然后) 下的 Cache eligibility(缓存资格) 部分,选择 Eligible for cache(符合缓存条件)

  5. 向规则添加 Cache Key(缓存键) 设置并开启 Cache deception armor(缓存欺骗防护)

  6. 要保存并部署规则,选择 Deploy(部署)。如果尚未准备好部署,选择 Save as Draft(保存为草稿)

这篇文档对您有帮助吗?