一 背景
随着越来越多的金融行业基于mPaas搭建并上线新的App,App的上线质量也成为各个客户关注的重点。上线前检测哪些项目,如何检测,检测数据指标包括哪些成为我们思考的主要方向。借着上次去XX农信客户去做线上功能检测,加上之前多个mPaas历史项目的踩过的坑,将App上线前mPaas相关检测内容整理沉淀如下。
二 检测方向
1. 安全性
1.1 RPC是否开启国密加密
对应金融性质的App来说,数据通信安全至关重要,mPaas已经支持 ECC、RSA 和国密(SM2)三种方式,
在金融行业App内建议开启加密配置为SM2国密加密,满足行业监管要求。配置可以参考文档:链接
1.2 离线包是否开启验签
为了保证下发到本地离线包的安全性,mPaas提供了离线包验签机制,保证了离线包的安全性。整体示意图如上所示,用户设置流程如下:
1. 开发者配置好一对公私钥,私钥放在服务端用于对离线包签名,公钥放在客户端,用于对签名对验证。
2. 在离线包发布平台,如果配置了签名私钥,平台下发的 amr 文件就会带上签名信息(通过私钥对离线包的 hash 值加密后得到的密文)。
3. 客户端在拿到 amr 包并解压后,客户端会使用在项目中预置的公钥进行签名的验证(解密上一步的密文得到一个 hash 值,同时本地计算离线包的 hash 值,判断两者是否相同),如果相同则通过验证。
4. 如果签名校验失败,则删除离线包走fallback地址。
通过离线包的验签机制,可以达到以下的目的:
1. 保证了离线包的内容完整,解决解压异常,读取异常下的正常显示
2. 保证了离线包的来源正确,不被本地恶意篡改
1.3 userId信息是否设置正确
因为userId会被后续用到很多地方,比如推送,白名单。所以一般建议选择服务端的userId字段作为存储字段,方便后续和服务端做userId字段同步,不建议存储个人手机号或者身份证等个人信息作为userId。
1.4 埋点信息是否包含敏感信息,比如交易单号
考虑到埋点的量级很大,所以mPaas的埋点默认本地是没有做数据加密的,所以埋点信息不建议包含敏感字段,防止由于埋点导致信息泄漏。敏感字段建议走RPC的数据通道上报,保证数据安全。如果有埋点埋敏感字段的诉求,需要主动开启埋点的本地加密配置。
1.5 隐私权限配置
由于现在监管机构对隐私权限管控比较严格,mPaas针对权限管控做了对应的接入方案。需要需要确保上线前隐私权限相关配置已经正常接入。
2. 稳定性
2.1 验证在Android4.X版本的是否可以正常使用
mPaas最低支持Android4.3版本以上,所以发布前需要验证下低版本Android设备的可用性,遇到比较多的是在Android4.X设备上由于多dex加载导致的类找不到导致的安装闪退问题。
2.2 iOS符号表是否正常上传
发布前需要确保iOS的符号表已经上传到mPaas后台,方便后台反解闪退信息。
2.3 热修复模块是否接入并且验证通过
发布前需要确保热修复模块的正常接入以及验证通过,保证上线有针对Native模块的热修复能力,保证异常场景下的修复能力。
2.4 离线包Fallback域名确认
确认Fallback域名是否是外网可访问的地址,遇到过发布后下发的还是内网地址的case
2.5 离线包模块接入CDN
上线前做好容量评估,默认mPaas的离线包是存储在OSS内的,但是一般建议针对离线包模块接入CDN,通过CDN的缓存功能解决因为离线包下载导致带宽打满的风险,同时相对于OSS存储来说,CDN的费用更低。接入示意图如下:
2.6 RPC核心链路接口压测
上线前需要对App核心链路的RPC接口做性能压测,获取接口性能瓶颈,可以用做后续的限流值的设定参考。同时需要针对RPC限流场景做演练,防止上线限流后客户端出现各种异常。
2.7 发布更新功能可用
上线前需要验证发布apk功能可用,包括发布更新的强制更新功能,保证在极端场景下,需要强制升级使用。
3. 性能体验
3.1 离线包离线功能是否正常生效
确保离线包的离线功能正常使用,防止由于离线包各种配置问题导致离线功能不生效。
3.2 UC内核是否正常接入
确保UC内核正确配置接入,主要解决系统Webview下的各种兼容性问题。同时UC提供了很好的稳定性,比系统webview更稳定。
3.3 核心链路离线包是否预制
在发布前,需要预制核心链路离线包,保证核心链路在极端异常场景下仍然可以打开。