首页 > 解决方案 > CloudFront 缓存包含授权数据的页面并将其提供给未经授权的用户是否存在任何危险?

问题描述

我在服务器端渲染我的 Angular 页面。如果用户通过身份验证,则返回的页面中可能包含敏感信息。我是 CloudFront 的新手,想知道如何将其配置为不缓存这些页面或按用户缓存它们(加上对所有匿名用户没有敏感信息的版本)。或者这甚至是一个问题?CloudFront 是否可以向未经授权的用户提供一些缓存的敏感信息?

标签: amazon-web-servicesamazon-cloudfront

解决方案


CloudFront 是否可以向未经授权的用户提供一些缓存的敏感信息?

是的,一般来说,它绝对可以。是否取决于应用程序的许多具体细节。但总的来说,这是一件值得关注的好事情。

我如何将其配置为不缓存这些页面或按用户缓存它们

我不是超级高级 CloudFront 用户,但我的方法与 CDN 无关:缓存控制。对于经过身份验证的页面,您希望包含指示该页面不被缓存的响应标头。服务器可以指示代理(如 CloudFront)和客户端(浏览器)允许和不允许缓存的内容。具体来说,对于任何访问受限的页面,我会指定Cache-Control: private. 这告诉下游代理他们不要缓存响应,但仍然允许浏览器在本地缓存它:

private

表示响应是针对单个用户的,不能由共享缓存存储。私有缓存可以存储响应。

Cache-Control您可以在 MDN 上找到有关和其他缓存机制的更多信息: https ://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control

与 CDN 配置相比,响应标头方法的优势在于,如果您曾经切换 CDN,则不必弄清楚如何重新创建配置;您的应用程序已经告诉 CDN 如何以完全基于标准的方式处理响应。


推荐阅读