首页 > 解决方案 > 如何隐藏存储在 JavaScript 中的 API 密钥?

问题描述

我希望我的 API 密钥被隐藏而不是公开。

我可以想出几种方法来传输 API 密钥,通过document.getelementbyId, .queryselectorinput - hidden;但是 API 密钥仍然会在 HTML 页面上可见。

什么是最好的解决方案?

标签: javascriptc#asp.netasp.net-core

解决方案


这里要注意的重要因素是任何 JavaScript 都在客户端机器上运行。

这是他们的机器,他们可以完全控制在上面运行的东西

你可以缩小,你可以混淆,你可以尝试所有可能的方法,但 API 密钥最终必须以某种方式在客户端的浏览器中重新制定。而且由于客户端的浏览器是他们的,因此您基本上可以 0 控制他们可以使用 API 密钥做什么。此外,客户端浏览器中的网络选项卡将显示 Web 应用程序发出的所有请求,包括使用 API 密钥发送的请求。

如果它是需要 API 密钥的第三方外部 API,则解决方案是拥有一个端点来为您进行身份验证,充当前端应用程序和 API 之间的接口。

如果这是您自己的 API,并且您需要公开不应公开的 API 端点,您将需要一种对用户进行身份验证的方法。从JSON Web 令牌开始将是一个很好的开始,但您如何引入 JWT 将在很大程度上取决于您的应用程序。


推荐阅读