验证iOS应用

时间:2011-05-17 15:13:38

标签: iphone ipad validation certificate

我们有一个iOS应用程序,它与后端的各种Web服务进行交互。然而,后端想要验证发送给它的请求来自我们有效的iOS应用程序,而不是来自重放攻击或“中间人”攻击。我们最终将所有呼叫都更改为https。但是,后端是否有任何方法可以验证请求是否来自我们的合法应用程序?我们考虑在每个请求中使用加密nonce,但它仍然倾向于“中间人”攻击。是否有可以在iOS应用程序和服务器之间使用的证书交换?

5 个答案:

答案 0 :(得分:3)

如何使用私钥/公钥方案,以便iOS应用程序可以签署它发送的每个请求?

如果私钥/公钥方案可能听起来很吓人,可以通过使用sha1sha2或其他加密哈希算法对您的加密随机数进行散列来轻松实现“签署”请求的相同想法。这很容易实现(实现很容易实现),速度快,并且可以确保更高的安全级别。

答案 1 :(得分:3)

使用证书的TLS和SSL支持client authentication。 NSStream 可能支持客户端身份验证,但是我没有找到办法来实现它,而不是使用OpenSSL进行实际实现。

增加:
从版本1.8开始,ASIHTTPRequest支持client certificates,因此不必大胆实施它。

答案 2 :(得分:1)

我建议使用OAuth。它是众所周知的,并且非常安全,如果某人获得了您的令牌,您可以发布一个新的应用更新并撤销旧令牌。

答案 3 :(得分:1)

这是一个普遍的http问题,而不仅仅是iOS问题。事实上,这是https旨在解决或至少减轻的问题。您可以对请求进行签名,使用HMAC对消息进行身份验证,使用摘要式身份验证等,但只要您使用http,就无法轻易检测到中间人攻击。尽可能快地花时间转移到https。

答案 4 :(得分:0)

绝对不可能解决这个问题。您放入计划的任何内容都可以通过越狱手机并在调试器中运行客户端来最终破解。当然,这并不意味着您不能使用客户端证书和诸如此类的东西来欺骗您的客户端更加困难,您应该这样做。但是,如果金融交易的安全性取决于您的应用程序不可欺骗,那就太糟糕了......