我如何识别我的API的用户,当他们在JS中调用它
How can I identify users of my API when they call it in JS?
我已经构建了一个人们打算在javascript(客户端,而不是Node.js)中使用的API。问题是我需要知道谁在使用我的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']
超全局变量来检查请求来自何处。下面的伪代码应该会给你一些提示:
$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.
您将看到,有必要在数据库中添加一个身份验证表,并在其中存储域、公钥和私钥,这样您就可以对请求进行身份验证。
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 使用agility.js进行页面布局和合成
- 使用Clipboard.js复制span文本
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 强制模板刷新ember.js
- 如何编写HTML输入的JS内联
- Angular JS IE9 Hashbang url rewriting
- 其他人可以在他们的 Node.js REPL 中使用 let 语句吗?
- 如何提示用户在 HTML/JS 中输入密码,让他们无法在页面源代码中找到密码
- 无法通过他们的id:fabric-js删除canvas和更改src
- 是否有CSS属性的默认值列表?(所以我可以在js中为他们创建一个排除数组)
- 谷歌地图地理编码API,功能从API缺少在他们的JS API (?)
- 使用在包含的库中定义的JS函数,我成功了.错误回调不会触发.问题与我的JS或他们的
- 我怎么能保留js的评论只是在哪里,他们与闭包编译器
- Paper.js如何为他们的Paperscript创建自定义脚本标签
- 我如何识别我的API的用户,当他们在JS中调用它
- js只发布给一个用户基于他们的id
- Spring是在升级他们的JS验证框架,还是JQuery是更好的选择
- 为什么我的javascript Backbone.js模型共享相同的"实例“;他们的父类
- 我如何改变我的d3.js条形图条单独的颜色,并为他们做一个比例