2009-09-02 113 views
0

我正在使用的iPhone应用程序需要GET调用第三方网站的api。 3D部分网站不提供SSL,并要求API密钥位于GET请求的查询字符串中。确保这一点的最佳方式是什么?我知道我可以让iPhone应用程序与我的服务器通话,然后我的服务器发送请求,但是我希望尽可能避免这种情况。另一个问题是如果这甚至是一个大问题。无论如何,如果它只提取数据,他们如何处理API密钥?从第三方隐藏API密钥?

回答

0

那天我问了一个similar question关于Google Maps API密钥。

我的想法是值得担心使用我的呼叫津贴的人。

我们的共识是,API旨在用于这种方式,并且您可以做的事情不多。

如果您的API需要您的域名作为带API密钥(Google Maps)的引荐标头,那么我提供了一定程度的威慑力。

2

3D零件网站不提供SSL 和需要API密钥是在得到 请求的查询字符串。

没有办法确保这一点。获取请求必须通过互联网发送,在那里可以看到,并且 - 因为您没有使用SSL - 所提取的API密钥。

您需要计算出的API密钥是。如果API密钥旨在识别您的应用程序,那么这种行为很好,您不必担心。如果它旨在识别您或您的计算机,那么这不是一种理智的事情;您需要联系第三方网站并制定安排,您可以为您的用户生成密钥或避免此要求。

+0

这是识别我的申请。 – SonnyBurnette 2009-09-02 16:01:38

+0

“如果API密钥旨在识别您的应用程序,那么这种行为很好,您不必担心。”如果其他人可以构成您的应用程序,他们可以做一些事情,比如发送大量垃圾邮件和超载服务器等,这可能会导致您的应用程序被禁止。另外,如果它不能可靠地识别应用程序,那么首先API密钥的要点是什么? – user102008 2011-09-22 02:04:59

4

事实上,无法保护它,仅仅是因为有人可以在设备和Web服务端点之间安装数据包侦听器,并只查看字节流。如果你的通讯频道没有加密,你就会敬酒。

解决方法是创建您的OWN代理服务器;该服务器将使用您的API密钥与终端服务进行通信。然后设备会与您的服务器通话(如果您愿意,您甚至可以保护设备与您自己的盒子之间的通道 - 这是您的服务器,一切取决于您)。

2

一个建议是创建一个位于中间的代理服务。所以实际上你的应用程序正在调用你的服务器,而服务器又会调用API并返回从服务器传回客户端的结果。这为您提供对API密钥的保护,以及将来透明地解释使用和/或更改提供者的方式。