因此,我正在开发一个仅供自己使用的小型应用程序,也许还有一个 Git 上的开源项目。我正在使用来自 Envato Marketplaces 的 API,众所周知,有些操作不需要任何密钥,但同时也有一些需要。
我首先用 PHP 为 Envato API 制作了一个很好的 API 包装器,但后来我决定用 JavaScript 进行一些试验,所以我正在用 JavaScript 开发相同的包装器。到目前为止,我对公共操作没有任何问题,但我现在必须使用 API 密钥。
我的问题是是否有一种方法可以保护 JavaScript 中的 API 密钥。我不能只是把它以纯文本形式放在那里,因为它可以被看到代码的其他人使用。那么会不会有 API 保密的实现呢?也许使用 XHR 从 JSON 文本文件中获取它?
原文由 Roland 发布,翻译遵循 CC BY-SA 4.0 许可协议
简短回答:否
无论你做什么来混淆密钥,你仍然必须发送它以使其以某种方式在客户端可用,因此可以使用 fx 提取它。萤火虫。
即使你设计了一种神奇的方法来保密密钥,在某些时候你也必须发出实际的 API 请求,并且由于它必须从浏览器发送,攻击者将能够读出密钥来自 Firebugs 网络选项卡的纯文本格式。
正确的做法是围绕需要密钥的 API 调用创建一个 PHP 包装器,然后从 Javascript 调用该包装器。