基本上我想限制对我的应用程序连接的Web服务的原始访问。从本质上讲,该应用程序正在从“http://apis.example.com/webservice”拖动数据。只需点击链接,任何人都可以在信息打开时查看信息。
我想添加一个API密钥,我会将其编码到应用程序中。
我的问题很简单,如何设置API密钥以防止人们在不附加密钥的情况下访问网络服务?数据保存在MySQL中,PHP脚本显示数据。
感谢您的帮助!
答案 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提供安全性和更多功能。