保护JAM Stack中的API密钥

时间:2018-11-16 07:07:45

标签: javascript netlify jamstack

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

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

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

如何保护我的API密钥不被窃听和滥用?

在这种情况下,“最佳做法”是什么?

预先感谢

1 个答案:

答案 0 :(得分:1)

免责声明:我为Netlify工作

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

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

    < / li>
  2. 如果您的远程服务可以验证签名并拒绝未签名的请求,则Netlify将使用JWS签名您的请求,因此没有其他人可以成功使用您的密钥。您可以使用signed指令进行重定向(再次只能在netlify.toml中使用,而不能在_redirects中使用)。

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

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