对于我的iOS应用程序,我面临一个与安全相关的问题。我在所有的网络调用中都使用HTTPS,所使用的公共证书来自受信任的机构,它被捆绑在应用程序中以防止中间攻击(ref:参与攻击的人- Wiki)。在Android中,我正在执行SSL固定(验证每个网络调用中/之前来自服务器的证书)--它的工作非常好,但是在iOS中,有一个TLS会话缓存在第一次网络调用之后缓存证书有效性。
对于第一次网络调用,证书验证部分工作正常,对于第二次调用,操作系统使用缓存,我无法验证证书。我的QA团队可以轻松地攻击和获取网络呼叫中的所有数据,用于第二次和连续的网络呼叫。以下是TLS会话缓存iOS文档的参考资料。似乎没有办法以编程方式清除缓存ref:AdvancedURLConnections。
更改查询参数没有帮助,我已经尝试过了。请提供iOS特定的解决方案。由于商业原因,我不能对我的数据进行加密。
编辑:我正在使用下面提到的方法来验证我的证书。对于第一次网络调用,此方法由操作系统调用,对于连续调用,此方法不被调用。
willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge我的QA团队只是对每个网络调用进行MiTM攻击,他们试图使用他们的证书,如果对于任何网络调用,我不验证证书,那么他们就可以轻松地读取数据。由于缓存,我无法验证我的证书。
发布于 2016-02-22 15:30:32
这个问题的答案是,如果您切换网络,将再次调用此方法。身份验证的响应或结果对于会话是持久的,只要会话有效,连接就会被保护。因此,只需依赖于框架的方法,并确保通信安全:)
https://stackoverflow.com/questions/24943072
复制相似问题