微信小程序 安全包括(框架、功能模块、账户使


一.小程序框架概述

小程序抽象框架

微信小程序 安全包括(框架、功能模块、账户使

视图层

包含WXML、WXSS和页面视图组件。

WXML是一种类似XML格式的语言,支持数据绑定、条件渲染、列表渲染、自定义模板、事件回调和外部引用

WXSS是一种类似CSS格式的语言,用于描述WXML的组件样式,决定WXML中的组件如何显示

组件是框架提供的一系列基础模块,是视图层的基本组成单元,包含表单组件、导航、地图、媒体组件等常用元素,如图1说明当前小程序支持的的视图组件。

微信小程序 安全包括(框架、功能模块、账户使

图1-小程序视图组件

逻辑层:

包含小程序注册、页面注册和功能API。程序注册代码位于app.js,页面框架注册位于app.json,如图2为官方示例小程序的app.js和app.json。功能API当前包含网络请求功能、文件处理功能、数据存储功能、微信的开放接口功能等,详见微信官方说明,如图3所示。

微信小程序 安全包括(框架、功能模块、账户使

图2-小程序注册代码示例

微信小程序 安全包括(框架、功能模块、账户使

图3-小程序功能API示例

原生实现层

承载小程序依赖的具体操作,由微信APP支撑实现,包括tbs内核、JSAPI框架、初始化小程序配置、功能接口实现等,实现代码主要位于com.tencent.mm.plugin.appbrand包,关联功能有微信平台原有的数据存储能力、二维码能力、网络请求能力、支付能力等。

小程序调用框架

微信小程序 安全包括(框架、功能模块、账户使

调用框架简图

上图主要说明小程序功能逻辑框架流程,由顶层的小程序实现代码(类似js),到微信底层支撑实现模块的调用流程,通过微信JSAPI框架支撑页面到本地实现的桥接调用。小程序缓存数据存放在Storage中,对应文件为DB数据库;小程序文件操作通过Hash机制进行映射,并存储在外部存储空间。

承载小程序展示的组件是.plugin.appbrand.ui.AppBrandUI、.plugin.appbrand.ui.AppBrandUI1、.plugin.appbrand.ui.AppBrandUI2、.plugin.appbrand.ui.AppBrandUI3、.plugin.appbrand.ui.AppBrandUI4,五个组件实现逻辑相同,AppBrandUI1- AppBrandUI4继承自AppBrandUI,图5为每个承载小程序的Android组件定义。

微信小程序 安全包括(框架、功能模块、账户使

图5-承载每个小程序展示的组件定义

支持最多同时有五个小程序在加载运行状态,每个小程序使用独立进程运行,如果当前开启的小程序已位于缓存进程中,则无需重新加载直接开启(速度快),否则重新加载并替换(如果已有五个缓存进程存在)存在时间最久的缓存进程,若当前未满五个缓存进程,则从未用进程中随机取得一个使用。下图展示微信APP同时已开启过五个小程序的对应进程。

微信小程序 安全包括(框架、功能模块、账户使

图6-小程序的进程缓存示意图

小程序初始化流程

小程序初始化流程包括开发者后台控制关键配置和安全的配置更新流程。

后台控制关键配置

小程序后台控制的配置信息主要包括小程序名称、图标、最大webview深度、最大请求数、请求合法域名列表、下载合法域名列表和上传合法域名列表、socket合法域名列表以及APP包的基本信息等,动态加载的配置信息相关代码详见【附录1】

安全的配置更新流程

启动小程序检查是否需从服务端更新最新配置,如果需更新则下载最新配置到本地APP,如图7说明当前设备上已有使用的9个小程序的初始化数据,以二进制文件形式(后缀为.wxapkg)存放在APP目录下。在初始化阶段完成小程序的关键属性更新和配置,此部分属性配置完全由后端配置控制,在更新传输和本地存储被恶意篡改的可能性极低,提取配置信息的实现代码详见【附录2】


内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwdjgw.html