如何在静态网站中安全地存储 API 密钥

m8c*_*hor 5 security api static single-page-application serverless

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

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

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

Mat*_*Goo -1

您研究过环境变量吗?

https://www.twilio.com/blog/2017/08/working-with-environment-variables-in-node-js.html

https://hackernoon.com/how-to-use-environment-variables-keep-your-secret-keys-safe-secure-8b1a7877d69c

  • 这个问题似乎是关于完全在客户端上运行的 SPA,没有服务器组件。这些链接适用于服务器端节点。 (4认同)
  • 如果没有某种后端代码,您就无法避免暴露 API 密钥。您至少可以在任何 FaaS 提供商(甚至免费提供商)中创建一个函数并将其用作网关。在那里您将检查您的条件并做出相应反应。 (2认同)