Files
full/docs/README.md

67 lines
5.7 KiB
Markdown
Raw Normal View History

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