缓存欺骗防御

缓存欺骗防御功能可以用于解决缓存中毒攻击问题。

什么是缓存欺骗

缓存欺骗是一种攻击手法,攻击者通过向缓存系统发送特定请求,诱使缓存系统存储错误或恶意的内容。这会导致后续用户请求时从缓存中获取到这些有害内容,从而影响用户体验,甚至导致安全问题。

Web缓存机制

Web缓存机制是一种优化策略,旨在提升网站内容的访问速度并减轻服务器负担。当采用边缘安全加速服务如ESA时,其边缘节点扮演着关键角色。这些节点依据预设的缓存规则,判断是否将客户端请求的资源文件(如CSS、JS、图片等静态或公共文件)存储于本地。一旦文件被缓存,后续来自同一区域的用户请求相同资源时,边缘安全加速 ESA能够直接、迅速地提供服务,无需再次从源服务器拉取,从而大幅缩短响应时间,提升用户体验。

image

攻击原理

Web缓存中毒攻击,缓存中毒攻击使用 HTTP 请求诱使源 Web 服务器使用与正常请求具有相同缓存键的有害资源进行响应。结果,中毒资源被缓存并提供给其他用户。

image

缓存欺骗防御工作原理

开启了缓存欺骗防御功能之后,客户端请求某个资源时,边缘安全加速 ESA会校验请求URL中的文件后缀对应的content-type和源站响应文件的content-type,如果校验结果不一致,则边缘安全加速 ESA不会缓存该资源。

例如:客户端请求资源http://www.example.com/index.html 。

  • 源站响应了文件内容index.html,并且携带content-type:text/html,那么边缘安全加速 ESA会检测到与预期的content-type:text/html 一致,边缘安全加速 ESA会缓存该资源。

  • 源站响应了文件内容index.html,并且携带content-type:text/plain,那么边缘安全加速 ESA会检测到与预期的content-type:text/html 不一致,边缘安全加速 ESA不会缓存该资源。

image

启用缓存欺骗防御

  1. 登录ESA控制台

  2. 在左侧导航栏,单击站点管理

  3. 站点管理页面,单击目标站点名称,或对应站点操作列的详情

  4. 在左侧导航栏,选择规则 > 缓存规则

  5. 单击新增规则,填写规则名称

  6. 当请求匹配以下规则时...区域设置要匹配的用户请求特征,具体配置规则请参见规则概述

  7. 绕过缓存区域,设置是否绕过缓存,具体请参见绕过缓存

  8. 自定义Cachekey区域,单击配置,开启缓存欺骗防御开关。

    image