缓存欺骗防御功能可以用于解决缓存中毒攻击问题。
什么是缓存欺骗
缓存欺骗是一种攻击手法,攻击者通过向缓存系统发送特定请求,诱使缓存系统存储错误或恶意的内容。这会导致后续用户请求时从缓存中获取到这些有害内容,从而影响用户体验,甚至导致安全问题。
Web缓存机制
Web缓存机制是一种优化策略,旨在提升网站内容的访问速度并减轻服务器负担。当采用边缘安全加速服务如ESA时,其边缘节点扮演着关键角色。这些节点依据预设的缓存规则,判断是否将客户端请求的资源文件(如CSS、JS、图片等静态或公共文件)存储于本地。一旦文件被缓存,后续来自同一区域的用户请求相同资源时,边缘安全加速 ESA能够直接、迅速地提供服务,无需再次从源服务器拉取,从而大幅缩短响应时间,提升用户体验。
攻击原理
Web缓存中毒攻击,缓存中毒攻击使用 HTTP 请求诱使源 Web 服务器使用与正常请求具有相同缓存键的有害资源进行响应。结果,中毒资源被缓存并提供给其他用户。
缓存欺骗防御工作原理
开启了缓存欺骗防御功能之后,客户端请求某个资源时,边缘安全加速 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不会缓存该资源。