我知道这个问题以前曾以各种形式提出过。但是,我不在寻找“使用https”的答案。我已经在使用HTTPS,而且我并不担心有效负载传输的敏感性。但是,我正在使用的iPhone应用程序正在与我创建的REST API(我有应用程序和服务器的控制权 - 因此,欢迎任何建议)交谈。在iPhone应用程序中使用REST API时的安全性
我用于身份验证的OAuth2用户协议,这意味着,我的“API密钥”是一个客户端ID和客户端秘密的组合仅需要被发送到获取access_token
。之后,使用access_token
和包含请求主体的HMAC的标头(使用客户机密钥作为密钥)将所有请求发送到服务器。这个添加的唯一原因是,有人不能通过一个access_token
进行API请求。
我正在与之交谈的API将在我发布应用程序时公布。所以我不一定担心其他人能够对其进行API调用。
我关心的是:
- 人们能够使用我的应用程序的客户端凭证(这意味着我无法检测在服务器端,它不是来自我的应用程序调用API )
- 人们能够滥用额外的范围,我的客户端ID将让他们有和传统的API用户将不必
我的猜测是,有没有真正解决这个问题的解决方案(除使用UIWebView并制作一个glor ified webapp),但我想我会问在这里无论如何。
如果需要应用程序使用,你们都可以考虑保护客户端ID /客户端密码的方法吗?
你是说oauth对你的应用程序不够安全吗? oauth客户端必须签署所有参数,因此只有具有访问令牌和秘密的客户端才能包含一些参数_and_正确签名。 – danh 2013-03-07 16:07:35
@danh实际上,OAuth2不会签署参数(这是OAuth1的一部分,它违反了该规范)。但是,不,我只是用相对微小的努力来说,有人可以对我的应用程序进行逆向工程,并获得我的客户ID和秘密,并将API作为我的应用程序发出请求。 – 2013-03-07 16:12:08
如果您可以(某些人)授予任何购买iPhone应用程序唯一标识符的人,可以将其链接到单个用户的凭据。有了这些,你就可以将已经获得iPhone应用程序的客户与另一个来源的客户区分开来。 – AardvarkSoup 2013-03-07 16:48:02