javascript - 如何隐藏存储在 JavaScript 中的 API 密钥?
问题描述
我希望我的 API 密钥被隐藏而不是公开。
我可以想出几种方法来传输 API 密钥,通过document.getelementbyId
, .queryselector
,input - hidden;
但是 API 密钥仍然会在 HTML 页面上可见。
什么是最好的解决方案?
解决方案
这里要注意的重要因素是任何 JavaScript 都在客户端机器上运行。
这是他们的机器,他们可以完全控制在上面运行的东西。
你可以缩小,你可以混淆,你可以尝试所有可能的方法,但 API 密钥最终必须以某种方式在客户端的浏览器中重新制定。而且由于客户端的浏览器是他们的,因此您基本上可以 0 控制他们可以使用 API 密钥做什么。此外,客户端浏览器中的网络选项卡将显示 Web 应用程序发出的所有请求,包括使用 API 密钥发送的请求。
如果它是需要 API 密钥的第三方外部 API,则解决方案是拥有一个端点来为您进行身份验证,充当前端应用程序和 API 之间的接口。
如果这是您自己的 API,并且您需要公开不应公开的 API 端点,您将需要一种对用户进行身份验证的方法。从JSON Web 令牌开始将是一个很好的开始,但您如何引入 JWT 将在很大程度上取决于您的应用程序。
推荐阅读
- java - 仅在猜错时如何减少刽子手游戏中的尝试次数?
- pandas - 熊猫等价于 Excel COUNTIFS
- scala - 为什么多个 Akka Actor 可以防止消息丢失?
- javascript - 在某些触摸事件后选择了多个选项卡
- javascript - 如何在多个 Axios 调用上运行回退?
- django - Django表单不断抱怨必填字段
- python - xlwings 错误:pywintypes.com_error:(-2147352573,'未找到成员。',无,无)
- powershell - 无法使用 powershell 从章鱼库作为 X509Certificate2 对象访问 ssl 证书
- botframework - 有没有办法在不验证选择的情况下使用 ChoicePrompt?
- python - Astropy:“ValueError:search_around_sky 的输入之一是 search_around_sky 中的标量”