我想卖一个iPhone应用程序,这将容纳一个网页的单一网页视图,比方说http://www.myapp.com/webview/我希望该应用程序有效地存储认证所需的凭证在网站上(即只有购买了应用程序的人可以查看此页面)
否则,我如何在iPhone上拥有安全、简单的webview,而不需要用户登录(本质上,他们购买应用程序将构成他们对页面的身份验证)
有人能帮上忙吗?
发布于 2012-02-08 04:04:03
没有绝对的方法来实现这个目标。如果您的web服务使用共享凭据(捆绑在应用程序中),则可以对该凭据进行反向工程。最终,不可能确保运行在另一台机器上的客户端是“您的”客户端。
关于这一点已经有很多讨论。这不是没有希望的,只是不可能解决100% (甚至90%)。SSL上的一个简单的共享密钥将阻止大多数攻击者,而不会伤害您的用户或花费大量开发成本。这是一种混淆,而不是安全性,但廉价和“最有效”比昂贵和“最有效”要好得多。
如果你有一个非常高价值的产品,那么它可能需要更积极(昂贵)的解决方案。所有这些解决方案都包括以下两种情况之一:
后者非常昂贵,而且永远不会结束。确保它是值得的。
其他一些有用的讨论:
关于我提到的“上的共享密钥”,我想指出一件事。请记住,如果您不验证证书,您将受到非常容易的中间人攻击。像Charles这样的现成代理可以做到这一点。最好的方法是确保返回的SSL证书由您的根证书签名,而不仅仅是“任何受信任的证书”。您可以使用SecTrustSetAnchorCertificates()重新配置您的应用程序信任哪些证书。iOS5:PTL在第11章(第221页)中介绍了这项技术。我还将其封装到一个名为RNPinnedCertValidator的库中。
另一个好的层次是实现一个质询-响应系统,在该系统中,服务器验证客户端是否拥有共享的秘密,而无需将其放到网络上。维基百科上关于Challenge-resonse authentication的文章对该算法进行了很好的解释。
https://stackoverflow.com/questions/9181186
复制相似问题