保护 JAM 堆栈中的 API 密钥

Ana*_*dhu 8 javascript netlify jamstack

我是 JAM 堆栈的新手。JAM 堆栈中的 Web 应用程序(我在 Netlify 中托管我的应用程序)将完全依赖 API 来存储信息和身份验证,对吗?

所以我担心我必须在我的 JavaScript 代码中公开我所有的 API 密钥。任何知道如何打开站点源代码的人都可以看到我的 API 秘密,并且很容易被滥用。

我是通过一个开放的问题JAM栈回购阅读这里Github上

如何保护我的 API 密钥免遭窃听和滥用?

在这种情况下,“最佳实践”是什么?

提前致谢

foo*_*ool 6

免责声明:我为 Netlify 工作

这是一个常见问题,Netlify 确实开发了一些功能来处理这个问题,而无需您运行任何额外的服务。两者都在本文中显示,但我会在这里总结:https : //www.netlify.com/docs/redirects/#structured-configuration

  1. 您可以使用headers用于重定向的指令使用特殊的 HTTP 标头代理到其他服务netlify.toml(仅 - 不在_redirects!)

  2. 如果您的远程服务可以验证签名并拒绝未签名的请求,Netlify 将使用 JWS 对您的请求进行签名,因此其他人无法成功使用您的密钥。您可以使用该signed指令进行重定向(仅 innetlify.toml再次,而不是 in _redirects)。

这两者都要求您对 API 有一定的控制权(或者让它支持在接受您的 API 请求之前需要这些配置之一)。

如果您无法控制 API,您可以考虑使用一个函数将它们添加到 API 请求中,实际上为您代理。请注意,这有点复杂,并且有一个硬性限制,即您的代码 + 代理 + 响应必须在 10 秒内发生,这与 Netlify 上默认的函数调用时间一样长。