我正面临着iOS应用程序的安全相关问题。我使用HTTPS进行所有网络呼叫,使用的公共证书来自Trusted Authority,它捆绑在应用程序中以防止Main攻击中间(参考:Man in the middle attack - Wiki)。我在Android中进行SSL Pinning(在每次网络呼叫之前/之前验证来自服务器的证书)它在iOS中运行得非常好,但是有一个TLS会话缓存在第一次网络呼叫后缓存证书有效性。
对于第一次网络呼叫,证书验证部分正常工作,对于第二次呼叫,操作系统使用缓存,我无法验证证书。我的QA团队可以轻松攻击并从网络中获取所有数据,以进行第二次和连续的网络呼叫。这是TLS Session Cache iOS documentation的参考。似乎没有办法以编程方式清除缓存ref:AdvancedURLConnections。
更改查询参数没有帮助,我已经尝试过了。请提供iOS特定解决方案。出于商业原因,我无法加密我的数据。
修改 我正在使用下面提到的方法来验证我的证书。对于第一次网络调用,此方法由OS调用,对于连续调用,此方法未被调用。
willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
我的QA团队只针对每次网络呼叫进行MiTM攻击,他们尝试使用他们的证书,如果对于任何网络呼叫我不验证证书,那么他们可以轻松读取数据。由于缓存,我无法验证我的证书。
答案 0 :(得分:0)
这个问题的答案是,如果您切换网络,将再次调用此方法。对于会话,身份验证的响应或结果是持久的,只要会话有效,连接就是安全的。所以只需依靠框架的方法并确保您的通信安全:)