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

Chr*_*rry 8 iphone authentication https

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

我怎样才能在iPhone上拥有安全,简单的webview,而无需用户登录(基本上他们购买应用程序将构成他们对页面的身份验证)

有人能帮忙吗?

Rob*_*ier 21

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

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

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

  • 验证用户而不是程序,或
  • 持续保持警惕,注意新的攻击并通过补丁修复它们.

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

其他一些有用的讨论:


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

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