我正在处理的iPhone应用程序需要GET调用第三方网站的API。 3d部件站点不提供SSL,并且要求API密钥位于GET请求的查询字符串中。确保这一点的最佳方法是什么?我知道我可以让iPhone应用程序与我的服务器通话然后我的服务器发送请求但我想尽可能避免这种情况。另一个问题是,这是否是一个大问题。如果仅仅提取数据,他们还能用API密钥做什么呢?
答案 0 :(得分:4)
实际上,不可能保护它,仅仅因为有人可以在设备和Web服务端点之间安装数据包监听器,只需查看流量字节即可。如果您的通信渠道未加密,那么您就是干杯。
一种方法是创建您的OWN代理服务器;该服务器将使用您的API密钥与端点服务进行通信。然后,设备将与您的服务器通信(如果您愿意,您甚至可以保护设备和您自己的设备之间的通道 - 它是您的服务器,一切都取决于您)。
答案 1 :(得分:2)
3d部件网站不提供SSL 并要求API密钥在get中 请求的查询字符串。
没有办法确保这一点。获取请求必须通过互联网进行查看,并且 - 因为您没有使用SSL - 提取了API密钥。
您需要弄清楚 的API密钥是什么。如果API密钥旨在识别您的应用程序,那么这种行为很好,您无需担心。如果它旨在识别您或您的计算机,那么这不是一个理智的事态;您需要联系第三方网站并制定一项安排,您可以为用户生成密钥或避免要求。
答案 2 :(得分:2)
一个建议是创建一个位于中间的代理服务。因此,实际上您的应用程序正在调用您的服务器,服务器又调用API并返回从服务器中继回客户端的结果。除了在将来透明地考虑使用和/或更改提供程序之外,这还为您提供了API密钥保护。
答案 3 :(得分:0)
我前几天询问了similar question有关Google Maps API密钥的信息。
我的想法是,是否值得担心有人使用我的通话津贴。
一致认为API旨在以这种方式使用,并且您无法做很多事情。
如果你的API要求你的域名作为带有API密钥的引用者标题(谷歌地图),那我认为这提供了一定程度的威慑力。