2.4 KiB
2.4 KiB
代码审计报告(2026-08-10)
范围
覆盖根 workspace、all、19 个业务模块、配置样例和维护脚本。执行结构盘点、敏感信息扫描、TODO/异常退出扫描和全部 module 测试。
已修复
| 优先级 | 问题 | 处理 |
|---|---|---|
| P0 | 19 个 go.mod 绑定 D:/work/bsm-sdk/core | 移除绝对路径 replace;20 个 module 测试仍通过 |
| P0 | 样例含公网地址、固定 secret 和开发机私钥路径 | 改为 localhost 或 CHANGE_ME |
| P1 | workspace 直接参与路径构造 | 限制字符和长度、转小写、增加测试 |
| P1 | 聚合入口缺少连接防护 | 增加 ReadHeaderTimeout、IdleTimeout、MaxHeaderBytes |
| P1 | gRPC GracefulStop 可能无限等待 | 受 context 约束,超时强制 Stop |
| P2 | 缺少统一验证入口 | 新增 PowerShell 和 Bash 验证脚本 |
| P2 | README 乱码且过时 | 重写 README 并建立 wiki |
尚存风险
P0:默认管理员密码
module/base/mgt/internal/models/init_db.go 仍包含 root 默认密码 123456。建议改为必填环境变量或一次性随机密码;未提供安全凭据时拒绝初始化。
已修复:market、mall 弱密码哈希
market 和 mall 的账号创建、登录、改密及初始化密码已从 MD5 加盐切换为 bcrypt。历史 MD5 记录需要通过密码重置流程迁移。
P1:reflection 与明文 h2c
all 默认启用 gRPC reflection,自身不终止 TLS。生产环境应在可信网络运行,由网关终止 TLS,并将 reflection 改为配置控制。
P1:未实现接口
social、wallet、mall、cms 等仍有模板 TODO。编译成功不代表功能完整;未实现 RPC 应明确返回 Unimplemented。
P2:测试覆盖不足
多数 package 没有测试。应优先覆盖认证、权限、支付、订单状态机、迁移和 all 请求分流。
P2:迁移与启动耦合
多个 models.New 会自动迁移或 seed。建议拆分连接、迁移、seed,支持蓝绿发布、只读实例和回滚。
建议路线
- 消除默认管理员密码并迁移弱密码哈希。
- 配置化 reflection、初始化行为和 TLS 信任边界。
- 为 auth、mgt、order、wallet 建立核心路径测试。
- 将数据库迁移和 seed 从进程启动拆出。
- CI 增加 workspace 验证、凭据扫描、proto 一致性和依赖漏洞扫描。
审计基线:全部 20 个 workspace module 的 go test ./... 通过;不包含真实基础设施集成测试。