平顶山河南网站建设,公总号开发就是网站开发吗,什么时候网站建设,单位网站设计制作背景
当你测试App的时候#xff0c;想要通过Fiddler/Charles等工具抓包看下https请求的数据情况#xff0c;发现大部分的App都提示网络异常/无数据等等信息。以“贝壳找房”为例#xff1a; Fiddler中看到的请求是这样的#xff1a; 你可能开始找证书的问题#xff1a;是…背景
当你测试App的时候想要通过Fiddler/Charles等工具抓包看下https请求的数据情况发现大部分的App都提示网络异常/无数据等等信息。以“贝壳找房”为例 Fiddler中看到的请求是这样的 你可能开始找证书的问题是不是Fiddler/Charles的证书没有导入的手机中去配置一遍又一遍又开始对比web端浏览器的https发现没问题。这时候你可能已经开始怀疑人生了。
那么究竟是不是证书的问题
没错就是证书的问题但跟你想象中的证书有点不同不是Fiddler内置证书的问题而是App内置证书的问题 -- SSL Pinning机制 什么是SSL Pinning? 首先在https的建立连接过程中当客户端向服务端发送了连接请求后服务器会发送自己的证书(包括公钥、证书有效期、服务器信息等)给客户端如果客户端是浏览器则使用内置的CA证书去校验服务器证书是否一致。
那么为什么Fiddler能够抓的到浏览器的https请求呢原因就是在于用户可以自由的将第三方的证书导入到浏览器内置的CA证书集中。 明白上述一点之后我们再回到App客户端App默认是信任系统Android or IOS用户第三方安装的的CA证书集的有一些App能够通过Fiddler抓到包的原因是因为我们可以在系统的用户CA证书集中添加Fiddler的证书。这样App就能信任证书是安全的放心的发送请求了。
但是现在随着系统的更新Google or Apple认识到安全越来越重要所以就引入SSL-Pinning技术开发者预先把证书相关信息预置到App中再打包这样在https通讯过程中App本地可以与服务器返回的证书可以做对比如果发现不一致那么可能就是由于中间人攻击比如Fiddler/Charles抓包工具App客户端可以终止https链接。
而在新版本的系统规则中应用只信任系统默认预置的CA证书如果是第三方安装的证书比如Fiddler安装的则不会信任 解决方案 上面的都是一些理论方面的内容到底该如何突破SSL Pinning机制能够抓到App的https请求包呢
方案一使用Android7.0以下的系统
目前已验证在Android 7.0或以上的系统有启用了对第三方证书的限制。但是在Android 7.0以下还是依旧可以将Fiddler/Charles的证书安装在用户的CA集中抓取https请求。
方案二将Fiddler/Chales证书安装到系统默认预置的CA证书区域中
此种办法前提是需要root权限但是现在很多新款手机获取root权限困难所以此办法并不推荐。
方案三反编译APK修改AndroidManifest.xml文件
有些APK加了壳需要先进行脱壳处理
再通过apktool等工具进行反编译
在源码的res/xml目录添加network_security_config.xml文件内容如下
修改AndroidManifest.xml文件在application标签中增加
android:networkSecurityConfigxml/network_security_config
此种方案比较适用于对反编译比较熟练的童靴
方案四VitualXposed框架JustTrustMe模块推荐
VitualXposed介绍 Use Xposed with a simple APP, without needing to root, unlock the bootloader, or flash a system image 官网下载地址https://vxposed.com/
简单来说VitualXposed可以在不需要设备root的情况下修改App的行为。此应用的工作原理类似于应用分身功能会将应用安装到一个虚拟独立的环境当中其内部会自带一个已经激活了的Xposed工具。 JustTrustMe介绍 An xposed module that disables SSL certificate checking for the purposes of auditing an app with cert pinning JustTrustMe是Github上面的一个开源项目是xposed中的一个模块用于禁止SSL证书验证。
官方链接https://github.com/Fuzion24/JustTrustMe
操作流程
将VitualXposed安装到真机中点击应用按钮-添加应用将要调试的App、JustTrustMe.apk进行安装
打开Xposed选择左上角导航栏-模块勾选JustTrustMe
重启VitualXposed应用打开贝壳找房通过Fiddler抓包可以看到App请求正常https请求能抓到 【资源分享】
下面这份资源对于想学习【软件测试】的朋友来说应该是最全面最完整的备战仓库希望也能帮助到你