【问题标题】:How to securely store an API key in static website如何在静态网站中安全地存储 API 密钥
【发布时间】:2020-06-19 10:39:52
【问题描述】:

我有一个托管在 AWS s3 中并由 cloudfront 提供服务的 SPA 网站 有多个 CNAMES 连接到该网站,例如A.Mysite.com,B.Mysite.com 我有一个静态网站连接到的 API,如果请求来自 A.Mysite.com,则只想为 A 提供内容,如果请求来自 B.Mysite.com,则为 B 提供内容

我应该在哪里存储 API 密钥?我猜在客户端公开 API 密钥是个坏主意,对吧? 我已经查看了 OAuth、JWT 令牌等。似乎无论如何,如果我没有服务器,我仍然必须向客户端发送访问密钥......

请帮助我理解这一点,因为我对如何在没有服务器的情况下实现静态站点和 API 之间的安全性感到非常困惑。

【问题讨论】:

  • 这是不可能的。该请求不会来自“A.Mysite.com”。它将来自客户端。您将需要重新设计,以使某些代码不是静态的。您发送给客户的任何内容都可以被客户以任何他们希望的方式使用。你不能阻止它。如果 API 密钥不是特别敏感,那么您可以使用混淆技巧(例如将密钥与一些特别复杂的代码混为一谈),但它无法承受任何严重的攻击。

标签: api security static single-page-application serverless


【解决方案1】:

【讨论】:

  • 这个问题似乎是关于完全在客户端上运行而没有服务器组件的 SPA。这些链接适用于服务器端节点。
  • 啊,是的,你是对的。我认为您可以在静态服务器配置(nginx)中设置环境变量。你控制你的静态服务器吗?您使用什么服务?也许是这样的:serverfault.com/questions/577370/…
  • 没有服务器,只有 s3。有没有办法实现这一点? Serverless 静态页面现在这么流行,为什么没有安全存储 API 密钥的解决方案?
  • 您无法避免在没有某种后端代码的情况下暴露 API 密钥。您可以做的最低限度是在任何 FaaS 提供商(甚至是免费的)中创建一个函数并将其用作网关。在那里,您将检查您的情况并做出相应的反应。
猜你喜欢
  • 2020-01-28
  • 1970-01-01
  • 2021-12-02
  • 2014-10-18
  • 2015-07-04
  • 1970-01-01
  • 1970-01-01
  • 2015-11-24
相关资源
最近更新 更多