缓存中毒攻击导致恶意响应被缓存并提供给其他用户
概述
缓存中毒攻击利用 HTTP 请求诱使源站 Web 服务器使用缓存键与干净请求相同的有害资源进行响应。于是,源站将中毒的资源缓存并提供给其他用户。
Cloudflare 等内容交付网络(CDN)依靠缓存键将新请求与缓存资源对比,并判断应从缓存中提供资源还是直接从源站 Web 服务器请求资源。
避免缓存中毒的建议
下面这些建议可以帮助您防范缓存中毒漏洞和攻击。
了解缓存中毒
要加深对与缓存中毒相关的风险和漏洞的了解,请查阅以下资源:
仅缓存真正静态的文件
检查源站 Web 服务器的缓存配置,并确保您缓存的是静态文件,而且不以任何方式依赖于用户输入。
要了解有关 Cloudflare 缓存的更多信息,请查看以下资源:
不要信任 HTTP 标头中的数据
客户端漏洞遭到利用的途径通常是 HTTP 标头,包括跨站点脚本(XSS)。
通常,您不应信任 HTTP 标头中的数据,因此:
- 如果 HTTP 标头中的值不是您缓存键的一部分,请不要依赖它们。
- 切勿在缓存内容中将 HTTP 标头返回给用户。
不要信任 GET 请求正文
Cloudflare 会缓存 GET 请求正文的内容,但不包含在缓存键中。GET 请求正文应视为不受信任,并且不应修改响应的内容。如果 GET 正文可以更改响应的内容,请考虑绕过缓存或使用 POST 请求。
监视 Web 安全公告
若要随时了解 Internet 安全威胁,请务必定期监视 Web 安全公告。一些比较热门的公告包括: