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