9

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

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

我正在阅读Github 上JAM 堆栈 repo 中的一个未解决问题

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

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

提前致谢

4

1 回答 1

7

免责声明:我为 Netlify 工作

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

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

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

这两者都需要您对 API 进行一些控制(或者让它支持在接受您的 API 请求之前需要其中一种配置)。

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

于 2018-12-26T00:17:33.213 回答