本文将从小程序的功能模块安全方面进行剖析,希望能为大家带来小程序安全方面的认知。
一,功能模块安全分析
功能模块安全分析大白将分为4个部分介绍,分别是:
网络传输安全
数据存储安全
文件存储安全
扫描二维码安全
1.1,网络传输安全
微信小程序支持发起通用请求、文件上传下载、WebSocket通讯机制, 在开发微信小程序的过程中,微信小程序官方强制使用https协议进行网络请求数据传输。小程序请求的域名必须经过微信小程序管理后台通过服务域名设置特定的安全域名(见下图),微信小程序仅能访问已经配置的安全域名下的url,确保网络请求是安全的。
在网络文件下载过程中同样仅支持从含有已配置域名的url下载资源,不是走http/https协议。下载成功后文件临时存放,通过微信小程序自定义协议wxfile进行访问,在android平台通过映射到SD卡上目录/sdcard/tencent/MicroMsg/wxafiles/wx_id/tmp_[hash_value]。
1.2,数据存储安全
微信小程序以K/V形式存放在本地缓存,将小程序需要存储的K/V数据直接存储到Storage DB缓存,微信小程序进行数据保护需要自行做加密处理。数据存储在本地DB,微信APP会对DB数据整体做本地加密保护,所以小程序本地存储数据的安全性依赖于微信数据库加密方案的安全,策略与EnMicroMsg.db类似。
1.3,文件存储安全
通过微信小程序下载的文件保存在SD卡/sdcard/tencent/MicroMsg/wxafiles/wx_id/目录下,通过微信小程序自定义wxfile://协议指向SD卡目录下的文件。微信App会对存放SD卡的文件有做完整性校验,无法被篡改。首先,最终存储的文件名是:对称加密(文件流内容Alder32校验和|原始文件名)生成的,最终文件名和文件内容会通过自校验判断完整性;其次,本地缓存是通过HASH映射查找文件。所以即使能破解文件名和文件内容,绕过文件自身签名校验,篡改为攻击者的伪造文件,小程序APP也无法映射到该伪造文件进行使用。
1.4,扫描二维码安全
微信小程序扫一扫功能依赖微信App的原生的扫码功能;生成小程序特定页面的专属二维码,依赖于微信认证机制的ACCESS_TOKEN,而ACCESS_TOKEN是通过小程序私有的唯一APPID和Appsecret请求得到,攻击者无法获知到该信息伪造生成二维码。