一、 APP应用开发架构
- 原生开发
- 原理:按照一般使用java语言开发,当然现在也有kotlin语言进行开发,简单描述就是使用安卓提供的一系列组件来实现页面,复杂点的页面可以通过自定义控件来实现。成本高,难度大,效率与功能最好
- 影响:会使用到安卓逆向(反编译)&抓包&常规测试;通过反编译提取源码,提取源码中的资产进行常规测试;通过抓包提取资产后进行常规测试
- 也可以通过逆向的角度去分析逻辑设计安全
- 案例:remusic安卓源码
- 使用H5语言开发
- 原理:使用H5开发可以做到多端复用,比如浏览器端,IOS端,当然H5开发是没有原生体验好,如果一个页面需要被分享出去,就用H5开发。
- 影响:因为没有使用PHP等开发语言,所以常规漏洞根本就不存在,只能在API和JS框架本身的安全问题入手,或者通过JS前端测试
- 案例:HBuilderX案例
- 常规web开发
- 原理:web APP开发简单来说,就是开发一个网站,然后加入app的壳,webAPP一般非常小,内容都是app内的网页展示,受制于网页技术本身,可实现功能少,而且每次打开,几乎所有内容都需要重新加载,所以反应速度满,内容加载过多容易卡死,用户体验查,而且app内的交互设计等非常有效。但开发周期长,需要的技术人员少,成本低。
- 影响:APP本质还是那个网站,没有什么差异,只是转变了显示格式,可以使用常规web安全测试手法
- 案例:
宝塔(ShopXO源码程序)+APP打包(变色龙、一门APP打包)
- WX小程序开发
- 通过web封装或者H5语言开发
- 使用flutter开发
- 原理: flutter是今年来谷歌推出的一款UI框架,使用dart语言进行开发,支持跨平台,weight渲染直接操作硬件层,体验可媲美原生。使用flutter技术比较新,生态还不完善,开发起来效率相对偏低