javascript - 带有客户端加密的预签名 S3 URL
问题描述
我已经搜索了很长时间,但没有人看到以下情况,如果有人可以提供帮助,非常感谢。
我们想使用 S3 预签名 URL 下载大文件,但出于安全原因,我们使用 KMS 的客户端加密来上传文件。
一种选择是使用 AWS 加密 SDK 在浏览器中加密文件,在后端上传到 S3,然后在从预签名 URL 获取文件后在浏览器中解密。但我担心用户浏览器中的凭据暴露。在 AWS 文档中https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/js-examples.html()
首先向浏览器提供您的凭据。适用于 JavaScript 的 AWS 加密开发工具包示例使用 webpack.DefinePlugin,它将凭证常量替换为您的实际凭证。但是您可以使用任何方法来提供您的凭据。然后,使用凭证创建 AWS KMS 客户端。
- 你有什么解决办法吗?
- 如果使用 AWS SDK,无论如何如果用户使用 F12 来避免凭证暴露?
解决方案
但我担心用户浏览器中的凭据暴露。
使用客户端加密,假设加密的秘密是随机的并且对内容是唯一的/特定的(使用信封加密)。
因此,如果客户端有权获得内容(要下载),则可以向客户端提供解密内容的密钥(您可以将密钥视为内容的一部分)。密钥(数据密钥)不得用于解密其他任何内容。
推荐阅读
- react-native - 数据未在本机反应中发布
- ios - SwiftUI:是否可以使用 ForEach + ContextMenu + if 语句?
- r - 我试图创建一个三向交互图,但我的 x 轴标签搞砸了
- javascript - 渲染组件数组时,单击按钮时总是会拾取数组的最新元素
- django - 即使将属性名称用双引号括起来,也会出现 JSON 解码错误
- python - 如何修复 vscode 中的 import xxx 错误?
- passenger - 如何将参数传递给PassengerStartupFile?
- powerbi - 我可以用 Dataset 组织历史吗?
- python - 来自 ThreadPoolExecutor 的 concurrent.futures.Future 有时会挂起
- flutter - 从另一个文件回到 main.dart 中的类