本文档总结微信小程序隐私合规检测的完整方法:工具、输入数据、检测流程、判定标准与输出物,可作为技术报告的方法论章节素材。
一、检测对象与方法总览
对微信小程序进行隐私合规检测,采用 “静态源码审计 + 动态行为采集 + 版本修复对比” 三结合方法,检测框架对齐工信部信管函〔2020〕164号 / 〔2023〕26号文的 “违规收集 / 超范围收集 / 违规使用 / 强制索取权限 / 自启动” 五大类检测项。
本次检测对象:
- XX充换电小程序(v18 原版 → v19 整改版)
- XX商城(v31 原版 → v32 整改版)
二、使用工具
| 工具 | 用途 |
|---|---|
| wxapkg 解包脚本(Python 自编) | 解析微信小程序安装包二进制格式(0xBE 魔数 + 索引区 + 数据区),提取 app-service.js、app-config.json、页面/组件/静态资源等全部源码文件 |
| python-docx | 以模板为底本原位生成报告(保留合并单元格、样式、章节结构) |
| 正则 / 静态分析(Python) | 对编译后的 app-service.js 定向提取:敏感 API、业务与第三方域名、隐私协议机制、缓存键、统计模块字段 |
| 微信开发者工具(检测方侧) | 真机/工具运行采集动态行为,输出记录 API 调用时序、参数、网络请求 URL 的日志 |
| Python 数据分析 | 解析动态行为日志:按行为类别分段统计调用次数、网络请求按域名归因、从本地统计缓冲还原上报参数、比对版本差异 |
三、输入数据
| 数据 | 说明 |
|---|---|
| wxapkg 安装包(主包+分包) | 微信小程序编译产物,需解包后才能获得源码 |
| 版本对应关系 | 必须说明哪个是原始版、哪个是整改修复版(如 _18 原版/_19 修复版;_31 原版/_32 修复版),否则无法做整改前后对比 |
| 动态行为采集数据 | 检测方生成的日志,含敏感 API 调用次数、发生时间、参数、网络请求完整 URL |
| 原检测报告模板 | 用于对齐报告格式(如绿盟版式 docx) |
四、检测流程
# @hl 1-2,9,13-15
① 解包 wxapkg → 提取全部源码(主包 + 分包)
② 静态源码审计
├─ 敏感 API 全量枚举(wx.* / uni.* / .index.*)
├─ 第三方域名/统计SDK 识别(如 tongji.dcloud.io)
├─ 隐私协议/同意机制核查
│ ├─ 组件级:agreeprivacyauthorization / onNeedPrivacyAuthorization / openPrivacyContract
│ └─ 逻辑级:isAgree / agreeProtocol 等同意状态的默认值(是否"默认勾选/默认同意")
└─ 权限声明核查(requiredPrivateInfos / scope.userLocation)
③ 动态行为解析
├─ 行为类别 + 调用次数统计
├─ 时序分析(敏感 API 是否先于协议确认触发)
└─ 网络请求按域名归因(自有服务器 / 第三方统计 / 微信平台行为)
④ 交叉定级 → 五大检测项结论(存在问题 / 未发现问题 / 不适用)
⑤ 按模板生成检测报告(docx)
⑥ 版本修复对比 → 逐项验证漏洞修复 → 生成"整改后复测版"报告
五、五大检测项判定要点
| 检测项 | 判定证据来源 |
|---|---|
| 违规收集个人信息 | 静态:协议同意默认值、隐私授权框架是否接入;动态:敏感 API 是否先于用户同意触发 |
| 超范围收集个人信息 | 单会话敏感 API 调用频次、是否捆绑采集(如统计模块顺带采位置)、是否有缓存/节流 |
| 违规使用个人信息 | 网络请求去向:是否发第三方统计平台、上报数据字段(设备信息/位置);隐私政策披露核验 |
| 强制频繁索取权限 | 声明的权限项数、动态是否触发权限弹窗、拒绝授权后是否强迫/反复弹窗 |
| 频繁自启动和关联启动 | 小程序场景不适用(运行于微信沙箱,无自启动能力);关联跳转(navigateToMiniProgram)是否用户主动触发 |
六、输出物
- 检测报告(按模板 docx,含基本信息、检测结论表、逐场景检测详情)
- 整改后复测版报告(含”整改前→后”对照表、复测结论、整改建议)
- 证据核对材料(针对存疑项的完整证据:请求地址/发生时间/请求参数/调用页面,用于向检测方核对)
七、本次实际结论
| 小程序 | 原版发现的问题 | 修复版复测结论 |
|---|---|---|
| XX充换电小程序(v18→v19) | 1.违规收集:定位先于协议确认 2.超范围:单会话频繁定位(12次) 3.违规使用:DCloud 统计采集位置并外发设备信息 |
全部修复: 接入 onNeedPrivacyAuthorization 隐私框架 + 定位授权弹窗 + requiredPrivateInfos 声明 + 定位缓存节流 + DCloud 上报链路整体移除(trackEvent 置空) |
| XX商城(v31→v32) | 违规收集:登录页 isAgree 默认同意(手机号采集默认放行) | 全部修复:isAgree 默认改 false(显式择入)+ 登录前置隐私检查 + 同意后恢复登录 + 移除手机号快捷登录 |
最终复测结论(两小程序一致):未发现问题 4 项 + 不适用 1 项,无遗留未修复漏洞。
本方法总结基于真实检测过程整理,供撰写技术报告参考。