2.8 KiB
2.8 KiB
2026-09-22 工作日志
全仓逐微服务代码审计(第二轮,业务实现层)
任务:重新分析并审计 BSM Infra Full 全部代码,按微服务名称输出 md 审计文档到 docs/;产品类文档放 wiki/;明确要求不得提出过度设计/过度封装建议。
产出
docs/新增 22 篇:18 个业务服务 +pkgs-all.md/pkgs-ecmall.md/workspace-and-scripts.md+README.md索引。wiki/新增产品级文档 2 篇:audit-2026-09-22-总体审计报告.md(P0/P1 风险台账 + 共性根因 + 修复优先级)、产品与服务目录.md(服务域/清单/完成度/跨域耦合/拓扑)。- 更新
wiki/README.md、根README.md的文档索引。 - 未修改任何源码/脚本。
审计约定(本次确立,后续沿用)
- 每篇结构:头部信息表 → 定位职责 → 代码结构与入口 → 接口清单 → 数据模型 → 核心流程(mermaid) → 审计发现(安全/正确性/未完成/健壮性) → 风险汇总表 → 修复建议(务实项)。
- 结论必须带
文件:行号证据;无法确认标【信息不足】。 - 修复建议只给最小直接动作,禁止统一框架/抽象层/DTO/VO/DDD/CQRS/拆微服务边界一类建议。
关键结论(P0 摘要,供后续跟踪)
- 认证:passport 与 mall 的验证码登录/注册不校验验证码;passport
Forget.Reset凭 identity 即可改密且写未加盐 MD5;mgtAppKey登录明文比对密码列;mgt dev 注入root/123456。 - 资金:wallet 支付回调不验签、提现只校验不扣减无幂等、余额扣减读后写;order 模拟支付/发货生产可达、
OrderApprove无鉴权、优惠券金额做加法致应付变高、扣库存不检查 RowsAffected。 - 越权:address/cms/group/relation/feed/mall/market/feedback 共 9 个模块存在"只校验登录、不校验归属/角色"。
- 上线阻断:pkgs 无 prod 配置、JWT/session 密钥默认值恰 32 字节可用、gateway 404 与业务 NotFound 无法区分;
scripts/api-docgen无法构建。 - 静默故障:多处引用不存在的列(
relation_id/creator_id/createor_id/enabled)与命名返回值reply未赋值。 - 测试:全仓仅 21 个
*_test.go,base 多数模块、wallet、social 三服务零单测。
方法备注
- 本机 bash shim 缺
dirname(PATH 报错但不影响),需export PATH="/usr/bin:/bin:$PATH"后执行find/grep/ls;PowerShell 输出未被捕获,改用 Bash/Glob/Grep。 - 大批量逐服务审计采用并行子代理(general-purpose)分域产出,子代理默认模型触发 429 时切换
model: "lite"可用;范例先由主代理写docs/logs.md固化为模板。 - 子代理无法 SendMessage(非 team 会话),改为在回复中汇报。