我是 JAM 堆栈的新手。JAM 堆栈中的 Web 应用程序(我在 Netlify 中托管我的应用程序)将完全依赖 API 来存储信息和身份验证,对吗?
所以我担心我必须在我的 JavaScript 代码中公开我所有的 API 密钥。任何知道如何打开站点源代码的人都可以看到我的 API 机密并且很容易被滥用。
我正在阅读Github 上JAM 堆栈 repo 中的一个未解决问题
如何保护我的 API 密钥免遭窃听和滥用?
在这种情况下,“最佳实践”是什么?
提前致谢
我是 JAM 堆栈的新手。JAM 堆栈中的 Web 应用程序(我在 Netlify 中托管我的应用程序)将完全依赖 API 来存储信息和身份验证,对吗?
所以我担心我必须在我的 JavaScript 代码中公开我所有的 API 密钥。任何知道如何打开站点源代码的人都可以看到我的 API 机密并且很容易被滥用。
我正在阅读Github 上JAM 堆栈 repo 中的一个未解决问题
如何保护我的 API 密钥免遭窃听和滥用?
在这种情况下,“最佳实践”是什么?
提前致谢
免责声明:我为 Netlify 工作
这是一个常见的问题,Netlify 确实开发了一些功能来处理这个问题,而无需您运行任何额外的服务。两者都显示在本文中,但我将在这里进行总结: https ://www.netlify.com/docs/redirects/#structured-configuration
headers
您可以使用重定向指令代理到具有特殊 HTTP 标头的其他服务netlify.toml
(仅 - 不在_redirects
!)
如果您的远程服务可以验证签名并拒绝未签名的请求,Netlify 将使用 JWS 对您的请求进行签名,因此其他人无法成功使用您的密钥。您可以使用该signed
指令进行重定向(仅在netlify.toml
再次中,而不是在中_redirects
)。
这两者都需要您对 API 进行一些控制(或者让它支持在接受您的 API 请求之前需要其中一种配置)。
如果您无法控制 API,您可以考虑使用一个函数将它们添加到 API 请求中,实际上是为您代理。请注意,这有点复杂,并且有一个硬限制,即您的代码 + 代理 + 响应必须在 10 秒内发生,只要您在 Netlify 上默认调用函数即可。