2011-12-20 72 views
21

我正在使用Remember the Milk web API构建Chrome扩展。为了调用此API中的方法,我需要使用API​​密钥和“共享密钥”对我的请求进行签名。在Chrome扩展中保护网站API密钥

我担心的是,任何用户可以只裂开的延伸和拔出这些价值,如果我将它们包括在公布的延伸。这可能会或可能不会对用户造成安全威胁,但是他或她肯定会使用/滥用我的API密钥,并可能会将其撤销。

这是我应该关注的东西吗?在已发布的JavaScript应用程序中是否有保护这类信息的最佳做法?

回答

13

最终你无法真正隐藏在浏览器中运行一个JS应用程序中的任何东西;你可以混淆或缩小代码,这会分散偶然用户的注意力,但最终它总能抓住你的明文秘密。

如果你真的需要防止这种情况发生,那么一种选择是从您的分机通过拨打您可以访问的服务器。您的服务器可以添加签名所需的任何参数,将呼叫转发到相关的API,并将API的响应传回给用户。当然,这会增加您可能不想要的带宽/正常运行时间限制。

+0

恐怕这将是解决此问题的最佳解决方案。编写一个Web服务来支持一个免费的,简单的插件绝对是过度的。另一个赢得编译的原生应用程序... – 2011-12-20 15:19:55

+1

是的。出于这个原因,我们基本上不允许基于JS的身份验证。当然,它仍然有可能有人向您的Web服务伪造请求...! – Graham 2011-12-20 15:37:50

+5

@JoshEarl编译的本地应用程序也有API密钥,并且可以使用像Charles/Fiddler这样的SSL嗅探器来提取它们。浏览器JS确实使它更容易。 – mikemaccana 2012-01-25 22:17:41