一、HTTPS请求
客户端APP发送HTTP请求时,在设置了网络代理的情况下,是可以用抓包工具(比如Charles)抓取到请求的参数和返回的数据的,post和get都一样;post请求并没有比get请求安全,只不过就是传输的数据不是明文而已。
HTTP请求的缺点
1. 通信使用明文(不加密),内容可能会被窃听
由于HTTP 本身不具备加密的功能,所以也无法做到对通信整体(使用HTTP 协议通信的请求和相应的内容)进行加密。窃听通信并非难事,只需要收集在互联网上流动的数据包(帧)就行了。对于收集来的数据包解析的工作,可以交给抓包工具(Charles)
2. 不验证通信方的身份就可能遭遇伪装
任何人都已发起请求,HTTP 协议通信时,不存在确认通信方的处理步骤。服务器只要接收到请求,不管对方是谁都会返回一个响应(但也仅限于发送端的IP 地址和端口号没有被Web 服务器设定限制访问的前提下)
3. 无法证明报文完整性,可能已遭篡改
完整性是指信息的准确度,若无法证明其完整性,通常也就意味着无法判断信息是否准确。比如,从某个Web 网站上下载内容,是无法确定客户端下载的文件和服务器上存放的文件是否前后一致的。文件内容在传输途中可能已经被篡改为其他的内容。即使内容真的以改变,作为接收方的客户端也是觉察不到的,这个情况称为中间人攻击
而HTTPS请求的话是在HTTP请求的基础上增加了一个SSL证书验证,SSL使用的是(对称非对称)混合加密机制的方式,这种加密方式目前来说是安全的。详情阅读:https://www.jianshu.com/p/0db870cad611
二、使用HTTPS存在的不安全的情况
服务器是使用的HTTPS协议传输,并且买了权威机构的CA证书。但是客户端在发送请求时,未使用证书验证方式,这样就会存在中间人攻击的可能
三、怎么防护APP安全?
使用证书验证的请求方式发送请求是能保证数据传输的安全的。
1. 如果是苹果官方认可的权威机构颁发的SSL证书,那么手机本身有证书,不用在项目里面配置证书,只需要设置请求的安全方式为证书验证方式:
可参考:https://www.cnblogs.com/diveinclub/p/5129198.html
附: 苹果官网信任的HTTPS根证书查看: https://support.apple.com/zh-cn/HT204132
2. 如果是自定义或未受官方认可的证书,需要在项目里面配置证书,然后请求的代码设置为证书验证。设置方法可参考:
http://www.cocoachina.com/ios/20160224/15394.html