如何在 JSON API 请求中隐藏 API 密钥

Posted

技术标签:

【中文标题】如何在 JSON API 请求中隐藏 API 密钥【英文标题】:How to hide API key in JSON API request 【发布时间】:2013-05-29 08:25:33 【问题描述】:

我正在创建一个提供卡号验证和交易插入服务的 API 服务器。

示例 API URL = http://mydomain.com/api.json?cardnumber=2342343244&api_key=jhj67asd234tgbh123

现有系统: 我正在为客户端系统(比如 ebay.com)提供一个 api 密钥。如果用户有一张有效的卡,我会提供折扣。因此,我的客户将向其最终用户提供一个表单字段以输入有效的卡号。

问题: 我的客户正在向我的域写入 ajax 请求以处理验证。问题是 api 密钥在控制台中可见,任何人都可以在客户端系统之外执行请求(安全损失)。

提议系统:请提议一个隐藏我的api密钥的系统,以便安全地处理请求。解决方案可能是任何其他编写 API 的方式。

我对 API 的了解较少。任何帮助将不胜感激。

【问题讨论】:

你的答案有什么更新吗? 【参考方案1】:

根据我的经验,没有一种简单的方法可以做到这一点。

我知道的唯一方法是为客户提供一次性密钥。一旦使用,它就会过期,客户将需要一个新的。

通过这种方式,密钥在控制台中是否可见并不重要,因为它只对单个请求有效。

我希望这会有所帮助,但我很想听听其他人的任何建议。

【讨论】:

感谢您的回答。但实际上不可能始终向客户端提供新密钥。我们可以在请求的响应中发送新的 API 密钥。但即使是新的 API 密钥也会在控制台中可见。

以上是关于如何在 JSON API 请求中隐藏 API 密钥的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 应用程序中隐藏 API 密钥? [复制]

如何与 Web XML/JSON API 交互?

API 密钥是不是通过 get 请求公开?

在 CRA 中获取捆绑包后如何保留我的隐藏字段(如 api 密钥)

在 Amazon API Gateway 中使用 API 密钥

如何隐藏Squarespace上的API密钥?