Files
user-system/docs/code-review/COMPREHENSIVE_SECURITY_REVIEW_2026-04-03.md
long-agent 5b6bd93179 refactor: 整理项目根目录结构
整理内容:
- 删除 60+ 临时测试输出文件 (*.txt)
- 移动二进制文件到 bin/ 目录
- 移动 Shell 脚本到 scripts/ 目录
  - scripts/dev/: check_gitea.sh, check_sub2api.sh, run_tests.sh
  - scripts/deploy/: deploy_*.sh, simple_deploy.sh
  - scripts/ops/: fix_nginx.sh, fix_ssl.sh, install_docker.sh
  - scripts/test/: test_*.sh, test_*.bat
- 移动批处理文件到 scripts/
- 移动 Python 脚本到 tools/
- 清理临时日志文件

保留根目录必要文件:
- go.mod, go.sum, go.work
- Makefile, docker-compose.yml
- .env.example, .gitignore
- README.md, AGENTS.md, DEPLOY_GUIDE.md

验证: go build ./... && go test ./... 通过
2026-04-07 18:10:36 +08:00

3.9 KiB
Raw Blame History

生产级全面审查报告 - 2026-04-03

审查范围: Go 后端 + React/TypeScript 前端 + 架构设计 审查方法: 多智能体深度审查 (并发/安全/前端/架构)


执行摘要

维度 得分 严重问题
后端安全 5/10 CRITICAL x2, HIGH x6
前端安全 8/10 MEDIUM x1
并发生命周期 8/10 LOW x2
架构设计 7/10 MEDIUM x2
综合 6.5/10 共 27 个问题

🔴 CRITICAL 问题 (2个)

1. BootstrapAdmin 端点无认证保护

  • 文件: router.go:116
  • 问题: /auth/bootstrap-admin 仅限流,无认证中间件
  • 影响: 攻击者可创建初始管理员账号

2. 错误信息泄露给客户端

  • 文件: auth_handler.go:381
  • 问题: handleError 返回原始 err.Error() 给客户端
  • 影响: 数据库错误、文件路径等内部信息泄露

🟠 HIGH 问题 (6个)

3. 主题 CustomCSS/CustomJS 存储型 XSS

  • 文件: theme_handler.go
  • 影响: 管理员可注入恶意 JS 到所有用户页面

4. GetUserDevices IDOR 漏洞

  • 文件: device_handler.go:159
  • 影响: 任何用户可查询其他用户的设备列表

5. TOTP 恢复码非恒定时间比较

  • 文件: totp.go
  • 影响: 时序攻击可逐步暴破恢复码

6. 短信/邮件验证码非恒定时间比较

  • 文件: sms.go:360, email.go:170
  • 影响: 时序攻击可逐步暴破验证码

7. 缓存一致性问题 (用户数据变更不清除缓存)

  • 文件: user_service.go
  • 影响: 密码修改后 15 分钟内缓存用户信息仍为旧数据

8. Redis 失败时安全路径静默失败

  • 影响: 登录计数/令牌黑名单在 Redis 错误时静默失败

🟡 MEDIUM 问题 (12个)

# 问题 文件
9 CORS 通配符 + AllowCredentials cors.go
10 OAuth implicit flow token 暴露在 URL sso_handler.go
11 内存限流可被重启绕过 ratelimit.go
12 CAS XML 解析用字符串操作 cas.go
13 SanitizeXSS 自毁式还原 validator.go
14 桩端点返回 200 而非 501 auth_handler.go
15 操作日志超时太短 (3s) operation_log.go
16 StateManager 清理未启动 (死代码) state.go
17 SSO IntrospectToken 锁升级竞态 sso.go
18 Webhook 重试任务关闭时丢失 webhook.go
19 密码策略默认太弱 auth.go
20 邮箱验证码分布不均匀 email.go

🟢 LOW/INFO 问题 (7个)

# 问题 严重度
21 密码策略默认太弱 LOW
22 邮箱验证码非均匀分布 LOW
23 Regex 未预编译 LOW
24 RSA 密钥 2048 位 LOW
25 SSO 内存会话无持久化 INFO
26 JWT 黑名单 TTL 受限于令牌剩余寿命 INFO
27 Webhook SSRF DNS 重绑定风险 INFO

正面安全实践

  1. Argon2id 密码哈希 - 64MB 内存5 次迭代
  2. 参数化查询 - 所有 Repository 使用 GORM 参数化
  3. LIKE 注入防护 - escapeLikePattern() 正确使用
  4. Webhook SSRF 防护 - isSafeURL() 阻止内网地址
  5. HMAC 签名 - Webhook 载荷使用 HMAC-SHA256
  6. RBAC 中间件 - 细粒度权限检查
  7. 限流 - 内存 + Redis 双限流实现
  8. 登录异常检测 - 暴力破解/新位置/新设备检测
  9. 设备信任机制 - 用户可审查和撤销信任设备
  10. 恢复码 Argon2id 哈希 - 存储前哈希

修复优先级

优先级 问题 工作量
P0 BootstrapAdmin 认证 + 错误信息泄露
P1 IDOR + 存储型 XSS + 时序攻击
P2 缓存一致性 + Redis 静默失败
P3 其他 MEDIUM/LOW 问题

验证矩阵

go build ./...    ✅
go test ./...    ✅
go vet ./...     ✅
npm run build    ✅
npm run lint     ✅