首页 > 解决方案 > 如何向用户隐藏 javascript(反应本机)应用程序中的 S3 密钥?

问题描述

我有一个应用程序将文件上传到 S3 存储桶作为其功能的一部分。我已经让应用程序运行,但存储桶的密钥在应用程序文件中,因此如果有足够的动机,用户可以看到密钥。我已经将密钥配置为具有有限的权限,但我能做些什么来防止用户看到密钥或至少混淆它们?

标签: javascriptamazon-web-servicesreact-nativeamazon-s3amazon-iam

解决方案


如果您的应用程序的前端需要读取它们,您几乎无法对用户隐藏它们。

根据您的用例,您可以查看一些场景。

首先,您可以用临时凭证替换永久凭证,为此您可以使用AWS Cognito服务。

通过使用它,您可以基于以下方法之一生成临时凭证:

  • 如果用户必须登录,他们可以附加到一个 cognito 用户,该用户将为他们生成临时凭证。
  • Cognito 还支持匿名用户(来宾用户),它也授予临时凭证。

如果应用程序主要是基于编写的,您可以采取的另一种方法是使用预签名的 S3 URL 来上传对象。这会将 API 网关与 Lambda 结合起来为您生成此信息,因此不会在前端存储任何凭证。查看这篇文章以获取有关如何处理该方法的更多信息。


推荐阅读