简介:mPaas上线应用检测

image.png

1. 背景

随着越来越多的金融行业基于mPaas[1]搭建并上线新的App,App的上线质量也成为各个客户关注的重点。上线前检测哪些项目,如何检测,检测数据指标包括哪些成为我们思考的主要方向。借着上次去XX农信客户去做线上功能检测,加上之前多个mPaas历史项目踩过的坑,将App上线前mPaas相关检测内容整理沉淀如下。

2. 检测方向

2.1 安全性

2.1.1 RPC是否开启国密加密

对应金融性质的App来说,数据通信安全至关重要,mPaas已经支持 ECC、RSA 和国密(SM2)三种方式,
在金融行业App内建议开启加密配置为SM2国密加密,满足行业监管要求。配置可以参考文档[2]。

2.1.2 离线包是否开启验签

1.png
图1

为了保证下发到本地离线包的安全性,mPaas提供了离线包验签机制,保证了离线包的安全性。整体示意图如上所示,用户设置流程如下:

  1. 开发者配置好一对公私钥,私钥放在服务端用于对离线包签名,公钥放在客户端,用于对签名对验证。
  2. 在离线包发布平台,如果配置了签名私钥,平台下发的amr文件就会带上签名信息(通过私钥对离线包的hash值加密后得到的密文)。
  3. 客户端在拿到amr包并解压后,客户端会使用在项目中预置的公钥进行签名的验证(解密上一步的密文得到一个hash值,同时本地计算离线包的hash值,判断两者是否相同),如果相同则通过验证。
  4. 如果签名校验失败,则删除离线包走fallback地址。

通过离线包的验签机制,可以达到以下的目的:

  1. 保证了离线包的内容完整,解决解压异常,读取异常下的正常显示。
  2. 保证了离线包的来源正确,不被本地恶意篡改。
2.1.3 userId信息是否设置正确

因为userId会被后续用到很多地方,比如推送,白名单。所以一般建议选择服务端的userId字段作为存储字段,方便后续和服务端做userId字段同步,不建议存储个人手机号或者身份证等个人信息作为userId。

2.1.4 埋点信息是否包含敏感信息,比如交易单号

考虑到埋点的量级很大,所以mPaas的埋点默认本地是没有做数据加密的,所以埋点信息不建议包含敏感字段,防止由于埋点导致信息泄漏。敏感字段建议走RPC的数据通道上报,保证数据安全。如果有埋点埋敏感字段的诉求,需要主动开启埋点的本地加密配置。

2.1.5 隐私权限配置

由于现在监管机构对隐私权限管控比较严格,mPaas针对权限管控做了对应的接入方案。需要需要确保上线前隐私权限相关配置已经正常接入。

2.2 稳定性

2.2.1 验证在Android4.X版本的是否可以正常使用

mPaas最低支持Android4.3版本以上,所以发布前需要验证下低版本Android设备的可用性,遇到比较多的是在Android4.X设备上由于多dex加载导致的类找不到导致的安装闪退问题。

2.2.2 iOS符号表是否正常上传

发布前需要确保iOS的符号表已经上传到mPaas后台,方便后台反解闪退信息。

2.2.3 热修复模块是否接入并且验证通过

发布前需要确保热修复模块的正常接入以及验证通过,保证上线有针对Native模块的热修复能力,保证异常场景下的修复能力。

2.2.4 离线包Fallback域名确认

确认Fallback域名是否是外网可访问的地址,遇到过发布后下发的还是内网地址的case。

2.2.5 离线包模块接入CDN

上线前做好容量评估,默认mPaas的离线包是存储在OSS内的,但是一般建议针对离线包模块接入CDN,通过CDN的缓存功能解决因为离线包下载导致带宽打满的风险,同时相对于OSS存储来说,CDN的费用更低。接入示意图如下:

2.png
图2

2.2.6 RPC核心链路接口压测

上线前需要对App核心链路的RPC接口做性能压测,获取接口性能瓶颈,可以用做后续的限流值的设定参考。同时需要针对RPC限流场景做演练,防止上线限流后客户端出现各种异常。

2.2.7 发布更新功能可用

上线前需要验证发布apk功能可用,包括发布更新的强制更新功能,保证在极端场景下,需要强制升级使用。

2.3 性能体验

2.3.1 离线包离线功能是否正常生效

确保离线包的离线功能正常使用,防止由于离线包各种配置问题导致离线功能不生效。

2.3.2 UC内核是否正常接入

确保UC内核正确配置接入,主要解决系统Webview下的各种兼容性问题。同时UC提供了很好的稳定性,比系统webview更稳定。

2.3.3 核心链路离线包是否预制

在发布前,需要预制核心链路离线包,保证核心链路在极端异常场景下仍然可以打开。

参考文档

[1]移动开发平台 mPaaS:https://www.aliyun.com/product/mobilepaas/mpaas
[2]数据加密:https://help.aliyun.com/document\_detail/72752.html?spm=a2c4g.11186623.6.732.6bb85ed3LyuYtO

我们是阿里云智能全球技术服务-SRE团队,我们致力成为一个以技术为基础、面向服务、保障业务系统高可用的工程师团队;提供专业、体系化的SRE服务,帮助广大客户更好地使用云、基于云构建更加稳定可靠的业务系统,提升业务稳定性。我们期望能够分享更多帮助企业客户上云、用好云,让客户云上业务运行更加稳定可靠的技术,您可用钉钉扫描下方二维码,加入阿里云SRE技术学院钉钉圈子,和更多云上人交流关于云平台的那些事。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

阿里云开发者
3.2k 声望6.3k 粉丝

阿里巴巴官方技术号,关于阿里巴巴经济体的技术创新、实战经验、技术人的成长心得均呈现于此。