【问题标题】:Keep AWS secret key out of Javascript code将 AWS 密钥保留在 Javascript 代码之外
【发布时间】:2019-04-24 05:00:50
【问题描述】:

我有一个使用 AWS Lambda 和 API Gateway(受 IAM 保护)作为后端的 Web 应用程序,前端是使用 React 构建的。我试图找出最好的方法是将 AWS 密钥排除在生产 Javascript 代码之外,到目前为止,我找不到比仅仅混淆密钥更好的方法,但这并不能真正解决任何问题。

到目前为止,在开发过程中,我正在使用 apigClient 并对访问密钥和密钥进行硬编码。

任何帮助将不胜感激。

谢谢。

【问题讨论】:

  • 也许创建一个包含您的 aws 信用的 json 文件?然后在你的代码中,你导入文件并得到你想要的
  • 我希望你的意思是在 backend 代码中,这绝对不应该在 React 应用程序中。当您使用 AMS 时,您可以查看 KMS 以帮助管理这些机密。
  • 我们也有类似的头痛。最后我们使用了 Cognito。如果您的应用程序通过 Cognito 进行身份验证,AWS 可以为其提供对您决定需要的任何内容的联合访问权限。当然,那么您会遇到将 Cognito 用户名和密码获取到您的应用程序的问题。但是,如果它是用户订阅的服务,那么我想在注册时可以通过电子邮件处理。当该用户的访问需求结束时,删除其 Cognito 用户。任何地方都不需要任何 AWS 密钥。不知道这是否有帮助,或者我的范围很广?干杯,亚当。

标签: javascript reactjs aws-lambda aws-api-gateway secret-key


【解决方案1】:

AWS 在其应用程序中有一个环境变量接口。看起来这些是docs for Lambda。您应该将任何凭证放入该界面,然后您应该能够在您的 Lambda 函数中访问它们。在本地,您可以使用像 dot-env 这样的 npm 并使用 .env 文件来访问您的环境变量。或者您可以在命令行中添加它们。如果您要使用 .env 文件,请务必忽略 .gitignore 中的该文件。

【讨论】:

    【解决方案2】:

    如果有人检查了您最终捆绑包的源代码,您在 javascript 代码中包含的所有内容都可以在浏览器中读取。

    如果您想 100% 确保您的密钥保持隐藏状态,则应在后端进行此身份验证。

    但是,您可以通过将密钥设置为环境变量来将密钥保留在存储库之外。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-13
      • 2013-01-25
      • 2021-12-24
      • 2014-12-15
      • 1970-01-01
      • 2020-09-08
      • 1970-01-01
      相关资源
      最近更新 更多