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

新手上路,请多包涵

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

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

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

原文由 Roland 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 743
2 个回答

简短回答:否

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

即使你设计了一种神奇的方法来保密密钥,在某些时候你也必须发出实际的 API 请求,并且由于它必须从浏览器发送,攻击者将能够读出密钥来自 Firebugs 网络选项卡的纯文本格式。

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

原文由 AHM 发布,翻译遵循 CC BY-SA 3.0 许可协议

我现在的解决方案是用 Rust 编写一个小包装器,然后将其放入 /cgi-bin 并对其进行调用。这应该使 api-key、api creds 和会话数据与客户端分开。

原文由 deRost 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏