实现API密钥以限制对Web服务URL的访问

时间:2017-09-28 01:03:57

标签: php mysql web-services api security

基本上我想限制对我的应用程序连接的Web服务的原始访问。从本质上讲,该应用程序正在从“http://apis.example.com/webservice”拖动数据。只需点击链接,任何人都可以在信息打开时查看信息。

我想添加一个API密钥,我会将其编码到应用程序中。

我的问题很简单,如何设置API密钥以防止人们在不附加密钥的情况下访问网络服务?数据保存在MySQL中,PHP脚本显示数据。

感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

API密钥只是机器之间密码的一个奇特术语。您所要做的就是考虑随机字符串,将其与您的请求一起发送,让响应服务器期望相同的字符串或拒绝提供响应。

例如,如果您的API密钥是永久安全的password123,您可能会收到如下请求:

http://apis.example.com/webservice?key=password123

并设置服务器端代码:

if (!isset($_GET['key']) || ($_GET['key'] !== 'password123')) {
    die('You shall not pass!');
} else {
    // do your magic
}

这只会为拥有密钥的人运行API脚本。

答案 1 :(得分:0)

固定刺痛总比没有好,但是检查数据的任何人都可以嗅到它并偷走你的钥匙。

您可以通过将密钥编码到您的应用中来实现质询响应设置,让应用向服务器发出请求,并且作为响应,服务器返回随机字符串。

应用程序使用密钥作为因子对字符串执行计算,并将结果返回给服务器。

服务器具有密钥,因此知道期望的结果,如果匹配则服务请求。

答案 2 :(得分:0)

您还可以使用API​​网关,有许多开源解决方案(Kong,Apigee等)可用于您的API前面,并为您的API提供安全性和更多功能。