Q07 · 用户隐私与审计巡检包(WIP-318 · 小齐 R9+R10)

版本:v1.0|执行:小齐|时间:2026-09-14 00:2x|基线 HEAD:9b88ece9(推送后 0ef1efe3)
依据设计文档:docs/reports/gpt6-评审-2026-09-13/03-波波小齐苦力活长线包设计.md(14 要素 / 12 字段证据 / P0-P3)
依赖:B02(角色矩阵)、用户与审计实现;不改核心代码,缺陷回原包

1. 包名称与目标

Q07「用户隐私与审计巡检包」。目标:核验①敏感字段脱敏、②越权读取防护、③注销/导出/隐私设置是否存在、④关键操作是否有审计留痕。

2. 本次覆盖范围

3. 明确不覆盖范围

4. 涉及接口/文件/文档边界

5. 字段定义

项口径
敏感字段openid / unionid / phone / 密码哈希 / 证件类
脱敏合格对端接口响应中不出现上述字段原文
越权合格访问他人资源返回 404(防 id 探测)而非 200 泄露
审计合格关键操作在审计表有可追溯记录(含操作人/角色/时间)

6. 成功路径

库结构盘点 → 路由扫描 → 实接口取字段 → 非破坏性越权探针 → 分级登记。

7. 异常路径

8. 幂等与重复请求规则

全部只读;越权探针使用不属于自己的资源 ID,不写入、不改状态。

9. 权限与审计要求

本包只取字段名与统计值,不落任何真实手机号/openid/密码值;审计样本仅取动作与角色。

10. 与现有实现的差异

项设计判据实测
导出与注销「导出和注销有审计记录」端点零命中(功能不存在,遑论审计)
关键操作可追溯「关键操作可追溯」audit_log 仅 1 种动作(payment_mode_change)

11. 依赖与阻塞项

12. 待核心席确认事项

  1. 注销/导出是否本期实现?(涉个人信息主体权利,建议至少规划)
  2. 哪些动作必须进 audit_log?(建议:登录、权限/角色变更、审核、退款、核销、导出、注销)
  3. 文档审计表 document_audit_logs 目前 0 条,是否为预留?

13. 验收证据

13.1 敏感字段盘点(users 表)

存在隐私字段:openid、unionid、phone、nickname、avatar_url、admin_password_hash、status、token_version、last_login_at、is_test

13.2 脱敏核验(✅ PASS)

13.3 越权读取探针(✅ PASS)

13.4 审计留痕实测

表行数覆盖
audit_log5仅 payment_mode_change(@merchants, role=owner)
order_intervention_logs4订单干预 ✅
order_events263订单事件 ✅
document_audit_logs0空(预留?)
merchant_updates8商户变更 ✅

13.5 缺陷单

🟠 Q07-D01|审计留痕覆盖极窄,关键操作不可追溯(P1 严重)

🟠 Q07-D02|无注销/导出/隐私设置端点(P1 严重 · 合规)

⚪ 观察项(不记缺陷)

14. 版本号与变更摘要