从Web前端,是否可以调用需要密钥的第三方API,同时保持密钥保密?

问题描述 投票:0回答:1

假设有一个 API 可以做一些有用的事情,人们每月付费才能使用。假设此 API 的端点如下:

https://www.example.com/api/GetMeaningOfLife

在发布到 API 时,客户端必须提供一个密钥来标识他们是 API 的付费客户。如果未提供密钥,API 将失败。

在 Web 应用程序的上下文中,为了确保密钥保密,可以只使用服务器端的 API,并将 API 调用的结果传递到生成的网页。这样,用户就无法在浏览器的开发者控制台中窥探以查找密钥,因为 API 消耗是在服务器上完成的。

但是,如果 API 意味着从前端(即 JavaScript)调用怎么办?如何使用密钥从 JavaScript 调用这样的服务,同时确保其他人不能只是从您的网站复制/粘贴密钥并开始在他们自己的网站上冒充您来访问您付费的 API?我有什么选择?

javascript api web-services security jwt
1个回答
0
投票

不。为了在保持 API 密钥保密的情况下调用第三方 api,应改为发出服务器端请求(即:后端请求),然后该请求的响应应发送到您的前端/Web 客户端。

在前端发送的任何请求都将记录在浏览器开发工具的网络控制台中,您可以在其中获取有关请求的详细信息,包括任何授权标头。 enter image description here

为了保密您的密钥,最好在后端服务器上设置 API 请求,以便在后端安全地处理该请求,并通过现有的安全 API 集成将该请求的响应发送到前端在您的前端和后端之间。

额外提示包括:

  1. 将您的秘密密钥存储在后端的环境变量中
  2. 使用 API 网关或服务来管理和验证 API 请求
© www.soinside.com 2019 - 2024. All rights reserved.