javascript - 如何向用户隐藏 javascript(反应本机)应用程序中的 S3 密钥?
问题描述
我有一个应用程序将文件上传到 S3 存储桶作为其功能的一部分。我已经让应用程序运行,但存储桶的密钥在应用程序文件中,因此如果有足够的动机,用户可以看到密钥。我已经将密钥配置为具有有限的权限,但我能做些什么来防止用户看到密钥或至少混淆它们?
解决方案
如果您的应用程序的前端需要读取它们,您几乎无法对用户隐藏它们。
根据您的用例,您可以查看一些场景。
首先,您可以用临时凭证替换永久凭证,为此您可以使用AWS Cognito服务。
通过使用它,您可以基于以下方法之一生成临时凭证:
- 如果用户必须登录,他们可以附加到一个 cognito 用户,该用户将为他们生成临时凭证。
- Cognito 还支持匿名用户(来宾用户),它也授予临时凭证。
如果应用程序主要是基于编写的,您可以采取的另一种方法是使用预签名的 S3 URL 来上传对象。这会将 API 网关与 Lambda 结合起来为您生成此信息,因此不会在前端存储任何凭证。查看这篇文章以获取有关如何处理该方法的更多信息。
推荐阅读
- php - MySQL:是否可以在单行中提供 mysql 用户名和密码?
- ios - PromiseKit:如何在 ObjC 中进行重试/轮询?
- node.js - Concat 视频使用 cloudinary 和 firestore
- ruby-on-rails - 已完成 500 内部服务器错误和 ActiveResource::ForbiddenAccess
- c++ - 在控制台中同时输入和输出
- django - 模块“django.db.models.fields”没有属性“子类化”
- python - 在 Python 3.7 中使用 ftplib 时,检测 ftp 连接是关闭还是未打开的正确方法是什么?
- reactjs - 更改设备语言后,为什么输入在 android webView 中不起作用?
- cypress - 赛普拉斯:期望元素包含一些文本
- c# - 如何同时显示 DisplayName 和 InstallDate,它只显示 InstallDate 的结果