柯芬芬
摘 要:随着移动互联网技术的不断发展,移动支付、共享单车、短视频等相继出现在众人视野,与之相伴的各种高危漏洞也呈大幅上升的趋势。文章对当前流行的跨平台移动应用开发框架进行优缺点分析,然后对移动应用开发过程中可能存在的WebView安全漏洞提出一些防护措施。
关键词:跨平台移动应用;安全漏洞;WebView
中国互联网络信息中心(China Internet Information Center,CNNIC)发布的第44次《中国互联网络发展状况统计报告》[1] 显示:截至2019年6月,99.1%的网民更青睐于使用手机上网,庞大的移动用户意味着庞大的移动市场,因此各大企业纷纷将目光聚焦在移动应用开发市场。各类黑客经常以移动应用为目标,通过恶意获取不同消费者的个人信息和消费细节来从中牟利,迫使开发人员在构建移动应用程序时,需要密切关注移动应用的安全问题。
目前,iOS和Android占据了移动操作系统绝大多数的市场份额,如果开发人员想要开发一款支持多平台的移动应用,就必须针对iOS和Android这两个平台分别开发,企业付出的成本和时间会成倍增加。于是跨平台的概念走进了人们的视野。跨平台开发是指应用的开发与运行不依赖于操作系统和硬件环境,在一个系统下开发的应用,能同时运行于其他系统和平台中。跨平台开发是为了增加业务代码的复用率,减少因要适配多个平台所带来的工作量,从而降低开发成本,实现一套代码多端使用,也能够保证一致的用户体验。本研究分析了当前流行的跨平台移动应用开发技术的原理和优缺点,指出其在开发移动应用程序时可能存在的安全问题,并且提出了相应的安全防护措施。
1 跨平台开发框架
近几年随着小程序,Web及APP多端的发展,迫使企业在开发移动应用时不得不考虑人力成本问题,如果一款移动应用能同时具有iOS,Android等多个系统的版本,毋庸置疑该多平台移动应用一定能进入更大的潜在市场,多端统一开发已是大势所趋。市场上跨平台框架[2]较多,下面介绍几个较为常用的框架:
1.1 uni-app
uni-app是一个使用Vue.js开发所有前端应用的框架,开发者编写一套代码,可发布到iOS,Android,H5以及各种小程序等多个平台。其优点如下:(1)uni-app开发体验对前端开发者比较友好,学习成本低,上手很快。(2)是提供云打包和本地打包,对没有苹果Mac电脑的人是福音。(3)uni-app是由DCloud出品、国产开源的框架,周边生态丰富,官网提供了多个官方QQ交流群,开发遇到问题时可以在群里直接咨询。(4)开发出来的项目运行性能良好,整体用户体验效果和原生相差不大。但由于uni-app问世的时间短,其的不足之处也较为明显:(1)部分功能操作仍要求编程人员具备原生开发经验。(2)在使用过程中存在部分Bug及问题,比如地图、手机震动。(3)涉及大量图片展示时,左右选项卡滑动可能存在些许的卡顿。
1.2 Flutter
Flutter是Google推出并开源的移动应用开发框架,采用Dart语言开发APP,其设计目标是使开发人员能够交付在不同平台上都感觉是自然流畅的高性能应用程序,实现只需一套代码就可以同时生成iOS和Android两个高性能、高保真的应用程序。
Flutter框架有以下几点优势:(1)Flutter提供了丰富的组件、接口,聚焦于原生体验的功能,分层的架构允许开发者创建美观和高度定制的用户体验。(2)Flutter的热重载可帮助开发者快速地进行测试、构建UI、添加功能并更快地修复错误。在iOS和Android模拟器或真机上可以实现毫秒级热重载,并且不会丢失状态,修改后,应用界面会立即更新。(3)Flutter可以复用现有的Java,Swift或Objective-C代码,访问iOS和Android上的原生系统功能和系统SDK。然而Flutter框架自身也存在不足之处,一是涉及硬件層功能场景的访问,仍然需要用原生代码实现接入;二是热更新能力,相比H5,React有所欠缺。
1.3 React Native
Facebook于2015年9月15日发布React Native框架,开发者可以使用JavaScript和React开发iOS和Android跨平台移动应用,采用JavaScript和XML-esque标记的混合编写,提倡组件化开发,提供一个个封装好的组件让开发者使用,组件也可以嵌套形成新的组件。
React Native框架的优势之处如下:(1)灵活高效的应用更新,不论是使用Android还是iPhone手机下载应用之后,开发者都可以在用户无感知的情况下加入新界面及新的业务逻辑。(2)一次学习,随处编写,使用React-Native可以为iOS/Android两个操作系统开发应用程序,不同平台上的代码根据平台会有一些微小的区别,但开发思路是相同的。(3)采用JS+原生渲染,摆脱了webview的交互和性能问题,相比H5性能有所提高。但其缺点也较为明显,如严重依赖于Facebook 的维护,必须在不同平台下写两套代码;经常有不可预期的Bug。
2 跨平台移动应用的安全漏洞与防护
一次编写、多平台运行,不需要针对特定平台进行开发的跨平台移动应用备受编程者的青睐,但随之而来的就是移动应用安全问题[3]的凸显,黑客利用跨平台移动应用程序可能存在的漏洞来进行攻击,其中WebView引起的安全问题和漏洞尤为明显。WebView是iOS/Android用于显示网页的控件,是一个基于Webkit引擎、展现Web页面的控件。Android平台的WebView组件主要存在WebView任意代码执行漏洞[4]、密码明文存储漏洞,下面针对上述漏洞作一些介绍。
2.1 WebView任意代碼执行漏洞
WebView任意代码执行漏洞产生的原因:由于WebView未正确限制调用addJavascriptInterface()方法,远程攻击者可通过使用Java Reflection API(Java反射机制)利用该漏洞执行任意Java对象的方法。
解决方案:Android API level 17以及以上的系统版本,被JavaScript调用的方法必须以@JavascriptInterface进行注解声明,同时设置minSdkVersion值大于或等于17,使应用不能在4.2以下系统上运行。
2.2 WebView密码明文存储漏洞
WebView密码明文存储漏洞产生的原因:由于WebView组件默认开启密码保存功能mWebView.setSavePassword(true),当用户输入密码时,会弹框询问用户是否保存密码,如果选择是,密码会被明文保存到应用数据目录的databases/webview.db中,这样会造成用户的个人敏感数据泄露。
解决方案:调用mWebView.getSettings().setSavePassword(false)代码来显示关闭WebView密码保存提醒功能。
iOS平台的WebView组件(UIWebView/WKWebView)存在控件跨域访问漏洞,产生漏洞的原因是UIWebView 默认允许“file://” 域发起跨域请求,而WKWebView可通过手动设置允许“file://”域发起跨域请求。攻击者可利用App文件下载机制将恶意文件写入沙盒内并诱导用户打开,当用户打开恶意文件时,其中的恶意代码可通过AJAX向“file://”域发起请求,从而远程获取App内所有的本地敏感数据。iOS平台的应用一旦在使用WebView组件时未考虑上述情况的话就会受到漏洞影响,其解决方案是尽量避免在WebView中加载来自外部传入的“file://”域页面;对于敏感信息数据,建议进行加密处理后存储,或使用iOS平台推荐的KeyChain服务进行存储,可缓解漏洞可能造成的破坏。
3 结语
本研究首先对当前流行的跨平台移动应用开发框架进行优缺点分析,紧接着对在开发过程中利用WebView组件时可能存在的安全漏洞进行阐述,并且提出相应的解决方案。
[参考文献]
[1]中国互联网络信息中心.第44次中国互联网络发展状况统计报告[EB/OL].(2019-08-30)[2020-03-10].http://www.cnnic.net.cn/hlwfzyj/.
[2]金诚.移动应用跨平台开发框架的比较分析[J].民营科技,2018(10):150-152.
[3]爱加密平台.2019年第二季度全国移动App安全性研究报告[EB/OL].(2019-08-09)[2020-03-10].https://www.freebuf.com/column/210912.html.
[4]黄青青.Android应用中的JavaScript使用模式及其安全漏洞分析[D].南京:南京理工大学,2017.
Research on security of cross-platform mobile application development technology
Ke Fenfen
(Jiangxi Modern Polytechnic College, Nanchang 330095, China)
Abstract:With the continuous development of mobile Internet technology, mobile payments, bike sharing, short videos, etc. have appeared in the publics eyes one after another, and various high-risk vulnerabilities accompanying it have also shown a significant upward trend. This article analyzes the advantages and disadvantages of the current popular cross-platform mobile application development framework, and then puts forward some protection measures for WebView security vulnerabilities that may exist in the process of mobile application development.
Key words:cross-platform mobile applications; security breach; WebView