Files
full/docs/README.md
2026-09-22 18:53:53 +08:00

67 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 代码审计文档索引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)