monitor-ai/docs/completed/LOOP-STATE-monitor-ai-full.md

2.1 KiB

LOOP-STATE — monitor-ai Full Review

审查状态 — monitor-ai Phase: 全量审查

第 1 轮

  • 日期: 2026-07-01
  • 发现: 2 CRITICAL, 3 HIGH, 3 MEDIUM
  • 修复状态: 已全部修复

问题清单

编号 严重度 文件:行号 描述 状态
C1 CRITICAL src/app/api/auth/login/route.ts localadmin 密码未加密存储,使用明文比较 已修复
C2 CRITICAL shared/lib/auth/oidc.ts nonce 未从 ID token 解析验证 已修复
H2 HIGH src/lib/monitor-worker.ts:88-89 日期计算未考虑 UTC+8 时区 已修复
H6 HIGH src/lib/monitor-worker.ts:144-158 字段名映射未处理 SQLite snake_case 已修复
H7 HIGH src/app/api/services/route.ts:40 审计日志缺少 userId/username 已修复
M1 MEDIUM src/lib/monitor-worker.ts:35,111 timestamp 字段未使用 escapeSql 已修复
M3 MEDIUM src/lib/db.ts:45 硬编码 webhook URL 未清空 已修复

第 2 轮

  • 日期: 2026-07-01
  • 发现: 0 CRITICAL, 0 HIGH, 0 MEDIUM, 1 LOW
  • 结论: 通过 — 连续两轮零 CRITICAL/HIGH 问题

验证结果

修复项 验证证据 状态
C1 route.ts:3 import bcrypt, route.ts:32 bcrypt.compareSync, db.ts:39-41 hashSync 通过
C2 oidc.ts:76-82 Buffer.from(..., 'base64url') 解析 nonce 通过
H2 monitor-worker.ts:89 new Date(now.getTime() + 8 * 3600000) 通过
H6 monitor-worker.ts:147-157 所有 snake_case 字段正确映射 通过
H7 services/route.ts:40 userId/username 已添加 通过
M1 monitor-worker.ts:2 import escapeSql, 多处使用 通过
M3 db.ts:45 webhook_url = '' 通过

新发现问题

编号 严重度 文件:行号 描述 状态
LOW-1 LOW services/route.ts:40 payload.sub 类型断言可优化 待优化(不影响功能)

审查结论:连续两轮通过,审查结束。