将iPhone应用程序的https加密安全保护到网页

时间:2012-02-07 17:49:45

标签: iphone authentication https

我想销售一个iPhone应用程序,它将一个网页视图放到一个网页上,说http://www.myapp.com/webview/我希望该应用程序有效地存储在网站上进行身份验证所需的凭据(即只有某人已购买该应用程序可以查看此页面)

如何在iPhone上安装一个安全,简单的webview,而无需用户登录(基本上他们购买应用程序将构成他们对页面的身份验证)

任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:20)

没有绝对的方法来实现这一目标。如果您的Web服务使用共享凭据(应用程序中捆绑了一个凭据),则可以对该凭据进行反向工程。最终,无法确保在另一台机器上运行的客户端是“您的”客户端。

对此有很多讨论。它不是没有希望,只有100%不可能解决(甚至90%)。通过SSL的简单共享密钥将阻止大多数攻击者,而不会伤害您的用户或开发大量成本。它是混淆,而不是安全,但廉价和“大多数有效”比昂贵和“大多数有效”好得多。

如果您拥有非常高价值的产品,那么它可能需要更具侵略性(昂贵)的解决方案。所有这些解决方案都包括以下两个方面之一:

  • 验证用户而不是程序,或
  • 持续保持警惕,注意新攻击并使用修补程序进行修补。

后者非常昂贵,永远不会结束。确保它值得。

其他一些有用的讨论:


编辑我想指出一点我提到“SSL上的共享秘密”。请记住,如果您不验证证书,您将受到非常容易的中间人攻击。像Charles这样易于使用的代理可以做到这一点。最好的方法是确保返回的SSL证书由您的根证书签名,而不仅仅是“任何可信证书”。您可以使用SecTrustSetAnchorCertificates()重新配置应用程序信任的证书。 iOS5:PTL涵盖了第11章(第221页)中的此技巧。我还把它包装成一个名为RNPinnedCertValidator的库。

另一个好的层是实现质询 - 响应系统,其中服务器验证客户端具有共享密钥而无需将其置于线路上。关于Challenge-resonse authentication的维基百科文章包括对该算法的一个很好的解释。