2017-09-28 19 views
-1

我不知道我是如何最好的问这个问题,所以请随意重新提出我的问题!实现一个API密钥来限制访问web服务的URL

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

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

我的问题很简单,我该如何设置一个API密钥来防止人们访问webservice而不添加密钥?数据保存在MySQL中,PHP脚本显示数据。

感谢您的帮助!

回答

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脚本。

+0

这正是我所期待的。谢谢! –

0

固定刺痛总比没有好,但任何检查数据的人都可以嗅探它并窃取你的密钥。

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

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

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

0

您还可以使用API​​网关,也有许多开源解决方案(港,Apigee等),可用它将坐在你的API前,会提供安全,还有更多的东西到你的API。