2012-02-07 32 views
8

我想卖的iPhone应用程序,将容纳一个单一的网络视图来一个网页,说http://www.myapp.com/webview/我想应用有效地存储认证所需的凭证,在网站(即只有购买了应用程序的人才能查看此页面)安全的HTTPS加密的iPhone应用程序,网页

我还有什么可以在iPhone上拥有安全,简单的webview,而无需用户登录(实质上,他们购买应用程序将构成他们的身份验证页)

任何人都可以在这方面帮助?

+0

你应该真的接受下面的答案。这很棒。 – 2013-03-20 21:28:16

回答

18

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

已经有很多这方面的讨论。这不是绝望,只有100%(甚至90%)才能解决。通过SSL的简单共享密钥将阻止大多数攻击者,而不会损害用户或花费大量开发费用。这是混淆,而不是安全,但便宜和“最有效”比昂贵和“最有效”要好得多。

如果你有一个非常高价值的产品,那么它可能有必要更积极的(昂贵的)解决方案。所有这些解决方案包括以下两种情况之一:

  • 验证用户,而不是节目,或
  • 持续警觉,留意新的攻击,并与他们打补丁修复响应。

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

其他一些有益的讨论:


编辑我想指出一件关于我提到的“SSL上的共享密钥”。请记住,如果您不验证证书,您将受到非常容易的中间人攻击。易于使用的代理如Charles可以做到这一点。最好的方法是确保返回的SSL证书由根证书签署,而不仅仅是“任何可信证书”。您可以使用SecTrustSetAnchorCertificates()重新配置应用程序信任哪些证书。 iOS5:PTL在第11章(第221页)中介绍了这种技术。我也将其包装到名为RNPinnedCertValidator的库中。

另一个好的层是实现在服务器验证客户端有而没有把它放置在导线的共享密钥挑战 - 应答系统。维基百科关于Challenge-resonse authentication的文章包含了对算法的很好的解释。

+0

非常感谢,谢谢。 – 2012-02-08 09:16:02

+0

修改为包含如何缓解SSL嗅探问题。 – 2012-02-08 13:56:38