【发布时间】: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