我有一个为移动应用提供内容的API,目前没有计划将API用于其他产品。我有两个主要问题:
为每个请求使用auth令牌(作为A GET参数传递)满足#2(我可以随时撤销它)但是我不想在将来更新应用程序以使用其他令牌。
此外,移动应用程序中的用户没有身份验证,API也是用PHP编写的。
这方面的最佳做法是什么?
答案 0 :(得分:3)
以下是一些有助于保持API隐私的建议。
但最终,如果有人真的想要访问您的API,他们会通过反向设计您的客户端代码或more complex data interception techniques。您可以期望的最好的做法是阻止普通用户进行访问尝试。
答案 1 :(得分:1)
我会回应之前的答案,你应该使用TLS作为理所当然的事情,以便加密线路上的流量以防止嗅探。但我要补充的是,您还需要阻止“捕获 - 重放”攻击,即使使用TLS,攻击者也可以重新发送他们可能已获得的先前消息(例如,从客户端日志)。在这种情况下,如果您在请求中使用nonce(意思是“一次编号”)和/或时间戳,并使用HMAC签名,则可以检测并阻止重放的API请求。我在我的博客上写过一个关于这个例子的文章:http://www.soatothecloud.com/2011/02/securing-apis.html。例如,亚马逊的API使用这种方法。
除了HMAC签名(上图),您还可以考虑监控传入的IP地址范围,设备信息(例如表示设备类型的标题 - Android与iOS等)以及可用于链接多个请求的其他因素到特定客户端,然后在API级别应用策略。
完全披露:我为API管理/ API网关供应商(Axway)工作,但上述信息应该是通用的。