如何在使用JavaScript时保护API密钥?

时间:2012-07-13 12:20:55

标签: javascript api api-key

所以,我正在开发一个仅供我自己使用的小应用程序,也许是一个关于Git的开源项目。我正在使用Envato Marketplaces的API,众所周知,有些操作不需要任何密钥,但同时也有一些需要。

我首先在PHP中为Envato API编写了一个很好的API包装器,但后来我决定用JavaScript进行一些实验,所以我正在使用JavaScript开发相同的包装器。到目前为止,我对公共操作没有任何问题,但我现在必须使用API​​密钥。

我的问题是,是否有办法保护JavaScript中的API密钥。我不能把它放在纯文本中,因为它可以被看到代码的其他人使用。那么API会保密吗?也许从XHR的JSON文本文件中获取它?

2 个答案:

答案 0 :(得分:20)

简答:否

你做了什么来混淆密钥,你仍然必须发送它以使其在客户端以某种方式可用,因此可以使用fx提取它。萤火。

即使您设计了一种令人敬畏的神奇方法来保密密钥,但在某些时候您必须提出实际的API请求,并且必须从浏览器发送,攻击者才能阅读从Firebugs网络标签中输出纯文本中的密钥。

正确的做法是围绕需要密钥的API调用创建一个PHP包装器,然后从Javascript调用该包装器。

答案 1 :(得分:1)

我现在的解决方案是在rust中写一个小包装,然后将其扔到/ cgi-bin中并进行调用。那应该使api-key,api凭据和会话数据与客户端分开。