现在很多iOS的APP没有做任何的安全防范措施,导致存在很多安全隐患和事故,今天我们来聊聊iOS开发人员平时怎么做才更安全。
一、网络方面
用抓包工具可以抓取手机通信接口的数据。以Charles为例,用Charles可以获取http的所有明文数据,配置好它的证书后就可以模拟中间人攻击,获取https加密前的明文数据。
1.1 中间人攻击
先简要地说下什么是中间人攻击:
①客户端:“我是客户端,给我你的公钥” -> 服务端(被中间人截获)。
所以现在是:
客户端->中间人
②然后中间人把消息转给服务端,也就是:
中间人->服务端
③服务端把带有公钥的信息发送给客户端,但是被中间截获。所以是:
服务端-[服务端的公钥] ->中间人
④中间人把服务端的公钥替换成自己的公钥,发送给客户端,声称是服务端的公钥:
中间人-[中间人的公钥] ->客户端
⑤客户端用得到的公钥加密,实际是用中间人的公钥进行加密,所以中间人可以用自己的私钥解密,获取原始数据,然后再用服务端的公钥对原始数据(或者修改原始数据内容)加密后发送给服务端。
这样中间人就可以获取到双方的通信数据,并可以制造虚假数据。
1.2 如何防范中间人攻击?
下面开始说如何防范:
1.2.1 SSL Pinning
SSL Pinning的原理就是把服务端的公钥存到客户端中,客户端会校验服务端返回的证书是否和客户端保存的一致ÿ