繁体   English   中英

当我的API用户在JS中调用时,如何识别他们?

[英]How can I identify users of my API when they call it in JS?

我建立了一个人们可以在javascript中使用的API(客户端,而不是Node.js)。 问题是我需要知道谁在使用我的API。 如果有人在我的API的ajax调用中包含API密钥,那么任何人都可以看到他们的API密钥并使用它。

如果我的API用户是从JS调用的,该如何识别?

$.ajax(function(){
  url: "http://usefulapi.com/get-things?api_key=123412341234134", // Anybody can see my API key.
  data: { some_data }
});

通常,我们使用公钥和私钥加密的组合来访问API。 专用密钥仅API才知道,并且您可以基于公用和专用密钥创建哈希,并在服务器端检查它们是否匹配。

接下来,将密钥限制为特定域是一个好主意。 在PHP中,您可以轻松地使用$_SERVER['HTTP_ORIGIN']超全局$_SERVER['HTTP_ORIGIN']来检查请求的来源。 以下伪代码应为您提供一些指针:

$domain = basename($_SERVER['HTTP_ORIGIN']);    
$apiKey = $_REQUEST['api_key'];
// Now, get the private key for this domain
// Check the private and public keys match
// The request is either allowed or denied.

如您所见,值得在数据库中添加一个身份验证表,并在其中存储域,公钥和私钥,以便对请求进行身份验证。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM