代码审计文档索引(2026-09-22)
本目录是 BSM Infra Full 后端 Go workspace 的逐微服务代码审计报告。审计基于静态源码阅读,覆盖 module/ 下 18 个业务服务、pkgs/all、pkgs/ecmall 两个聚合入口,以及工作区与工程脚本。
审计方式:只读静态分析,不修改任何源码。结论均带
文件:行号证据;无法确认处以【信息不足】标注。 修复建议仅针对实际缺陷给出最小、直接的动作,不包含引入统一框架、抽象层、DTO/VO、DDD/CQRS 等过度设计/过度封装方案。
交接给后续的文档分层
| 目录 | 内容 |
|---|---|
docs/(本目录) |
按微服务名称的审计报告(本文档为索引) |
wiki/ |
产品级文档:总体审计报告、产品与服务目录、架构、运维、API |
基础与平台服务域(module/base)
| 审计报告 | 服务 | 主要职责 | 最严重问题(摘) |
|---|---|---|---|
| passport.md | passport | 用户账号与身份认证 | 验证码登录/注册/找回不校验验证码;找回密码凭 identity 即可改密且写未加盐 MD5 |
| mgt.md | mgt | 后台组织与权限管理 | AppKey 登录明文比对密码列(pass-the-hash);dev 配置注入 root/123456 |
| initial.md | initial | 客户端初始化与基础字典 | check/config_cache.go:21 ORDER BY 字符串拼接(SQL 注入);版本判断非语义版本→强制降级 |
| sender.md | sender | 短信与邮件发送 | 腾讯云短信空实现 return nil,nil;日发送量/黑名单限制从未生效;验证码可重放 |
| fts.md | fts | 文件传输与上传存储 | 上传路由前缀不一致;文件类型/大小校验次序问题 |
| cloud.md | cloud | 个人云空间与资料管理 | 空间唯一键导致多用户不可用;私人资料"加密"名不副实;根目录空指针 panic |
| cms.md | cms | 站点内容管理 | 文章/评论越权删改;评论发布 panic;赞踩无去重可刷负;Site 全系列占位 |
| ads.md | ads | 公共广告位内容分发 | README 宣称的缓存完全未实现(Redis 零引用);鉴权口径自相矛盾 |
| feedback.md | feedback | 意见反馈管理 | Modify/Delete/Remark 以入参 identity 为唯一条件→越权改他人反馈;接口全匿名 |
| logs.md | logs | 业务操作日志 | 路由无鉴权;fetch 键名不一致与 level 断言双 panic;分页参数失效;IP 过滤写反 |
电商与交易服务域(module/ec)
| 审计报告 | 服务 | 主要职责 | 最严重问题(摘) |
|---|---|---|---|
| address.md | address | 收货地址簿 | Get/Modify/Delete 无归属约束→越权读改删他人地址(可遍历 id 拿姓名/手机号/住址);Fetch 恒空 |
| mall.md | mall | 店铺与商品经营 | 员工验证码登录不校验验证码;店铺支付/邮件凭据任意登录用户可读改;12 处写操作无店铺归属校验 |
| market.md | market | 代理与供应商管理 | 审核无鉴权、开号/删号鉴权被注释;登录令牌 AES 与鉴权 JWT 互斥 + 解析失败 panic;Data 确认为空实现 |
| order.md | order | 购物车与订单生命周期 | 模拟支付/发货生产可达且硬编码支付参数;OrderApprove 无鉴权;优惠券做加法致应付变高;扣库存不检查 RowsAffected→超卖 |
资金与支付服务域(module/finance)
| 审计报告 | 服务 | 主要职责 | 最严重问题(摘) |
|---|---|---|---|
| wallet.md | wallet | 钱包与支付接入 | 支付回调不验签、客户端可自证支付成功;提现只校验不扣减且无幂等;余额扣减读后写→双花;支付宝分支必然 panic;微信密钥明文入库 |
社交服务域(module/social)
| 审计报告 | 服务 | 主要职责 | 最严重问题(摘) |
|---|---|---|---|
| feed.md | feed | 社交动态与内容互动 | 动态越权删改 + 私密动态泄露;分页 Limit(page) 错误;DeleteComment 空函数;HTTP gateway 不可用 |
| group.md | group | 群组与成员管理 | 入群审批无角色校验;Modify 重写群 identity 致成员脱钩;列名错误使核心接口恒失败 |
| relation.md | relation | 好友、关注与匹配 | 通过申请可单方面加任意陌生人为好友;TagFetch 必然 panic;7 个接口引用不存在的 relation_id 列 |
聚合入口与工程
| 审计报告 | 对象 | 最严重问题(摘) |
|---|---|---|
| pkgs-all.md | pkgs/all(15 服务聚合) | grpc-gateway 404 与业务 NotFound 无法区分→真实错误响应被覆盖;JWT 密钥默认值恰 32 字节可自签;无生产配置 |
| pkgs-ecmall.md | pkgs/ecmall(14 服务聚合) | 同源 404 分流缺陷与密钥问题;聚合不建表不播种→首次部署缺表缺管理员 |
| workspace-and-scripts.md | go.work 与 scripts | api-docgen 当前无法构建且版本长期漂移;SDK 指向仓库外相对路径不可移植;验证脚本 gofmt 门禁有缺口 |
统计
- 审计对象:21 篇报告(18 业务服务 + 2 聚合入口 + 1 工作区/脚本)
- 覆盖:
module/903 个.go、66 个.proto、58 个.yaml;pkgs/54 个.go - 跨服务汇总与修复优先级:
wiki/audit-2026-09-22-总体审计报告.md - 产品与服务目录:
wiki/产品与服务目录.md