amazon-web-services - CloudFront 缓存包含授权数据的页面并将其提供给未经授权的用户是否存在任何危险?
问题描述
我在服务器端渲染我的 Angular 页面。如果用户通过身份验证,则返回的页面中可能包含敏感信息。我是 CloudFront 的新手,想知道如何将其配置为不缓存这些页面或按用户缓存它们(加上对所有匿名用户没有敏感信息的版本)。或者这甚至是一个问题?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 如何以完全基于标准的方式处理响应。
推荐阅读
- php - 可以使用 PHP 的 mail() 函数发送 100 万多封邮件吗?
- xamarin - 主详细信息页面内的导航页面
- javascript - 自定义登录表单按钮没有响应
- python - 如何在 Windows 上的 PyCharm 中从 python3-apt 安装 Python 包?
- java - 将 SQL 转换为 JPQL:INNER JOIN 与 SELECT
- audio - 从 L16 创建 mulaw 音频文件
- r - 如果另一个变量中的值在 dplyr 的列表中没有匹配项,则删除一个变量中的值
- javascript - React Native - 如何永久禁止用户
- javascript - 如何将数据绑定到多选?
- node.js - express-validator 并在错误后填充输入字段