a20cefcfbd
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3.9 KiB
3.9 KiB
审计记录:全站 bug 审查修复 (前端9项 + 后端5项)
审计信息
- 日期: 2026-06-01
- 审计人: Claude (AI)
- 触发原因: 全站巡检 bug 审查
审计范围
| 文件 | 变更类型 | 状态 |
|---|---|---|
| frontend/src/App.vue | 1行导入修复 | ☑ 已审 |
| frontend/src/pages/LoginPage.vue | TOTP流程+锁定倒计时 | ☑ 已审 |
| frontend/src/pages/ServersPage.vue | domain端口污染修复 | ☑ 已审 |
| frontend/src/pages/PushPage.vue | Set索引修复 | ☑ 已审 |
| frontend/src/pages/SettingsPage.vue | 类型转换修复 | ☑ 已审 |
| frontend/src/api/index.ts | 删除重复定义 | ☑ 已审 |
| frontend/src/pages/TerminalPage.vue | 路径验证正则 | ☑ 已审 |
| frontend/src/composables/useWebSocket.ts | 连接泄漏修复 | ☑ 已审 |
| server/api/websocket.py | redis.keys→scan_iter | ☑ 已审 |
| server/application/services/auth_service.py | TTL重置修复 | ☑ 已审 |
| server/api/servers.py | 并发session lock | ☑ 已审 |
| server/api/settings.py | 弃用API修复 | ☑ 已审 |
审计8步结果
Step 1: 登记 ✅
commit 6183047: fix: 全站 bug 审查修复 (前端9项 + 后端5项)
Step 2: 全文Read ✅
所有12个文件逐行审读完毕
Step 3: 规则扫描H
| H# | 规则 | 文件 | 行 | 说明 |
|---|---|---|---|---|
| H1 | 硬编码密钥 | 全部 | - | 无命中 |
| H2 | f-string拼SQL | 全部 | - | 无命中 |
| H3 | 静默吞错 | 全部 | - | 无新增空catch |
| H4 | 未验证输入拼shell | 全部 | - | 无命中 |
| H5 | 明文密码前端 | 全部 | - | 无命中 |
| H6 | XSS | 全部 | - | 无新增v-html |
| H7 | JWT保护 | 全部 | - | 无新增未保护端点 |
| H8 | 审计日志 | 全部 | - | 无新增CUD操作 |
Step 4: Closure表
| H# | 判定 | 依据 |
|---|---|---|
| H1-H8 | 无命中 | 本次修复均为bug修复,未新增端点/功能/密钥/XSS风险 |
Step 5: 入口表
无新增入口。本次修复不改变API接口。
Step 6: 输入→Sink
- SettingsPage 数字转换: 正则
/^\d+(\.\d+)?$/匹配纯数字字符串 →Number(val)→ 安全(仅转数字字符串为数字) - TerminalPage 路径正则:
/^[^\x00-\x1f\x7f"']+$/.test(p)→ 白名单排除控制字符和引号 → 安全 - PushPage Set取值:
selectedIds.value.values().next().value→ 标准 ES6 迭代器 → 安全
Step 7: 归类
frontend/src/App.vue 1行修改 0H 0FINDING
frontend/src/pages/LoginPage.vue 15行修改 0H 0FINDING
frontend/src/pages/ServersPage.vue 1行修改 0H 0FINDING
frontend/src/pages/PushPage.vue 1行修改 0H 0FINDING
frontend/src/pages/SettingsPage.vue 6行修改 0H 0FINDING
frontend/src/api/index.ts -4行删除 0H 0FINDING
frontend/src/pages/TerminalPage.vue 1行修改 0H 0FINDING
frontend/src/composables/useWebSocket.ts 5行修改 0H 0FINDING
server/api/websocket.py 3行修改 0H 0FINDING
server/application/services/auth_service.py 4行修改 0H 0FINDING
server/api/servers.py 4行新增 0H 0FINDING
server/api/settings.py 3行修改 0H 0FINDING
──────────────────────────────────────────────────────────
总计 0H 0FINDING
Step 8: DoD ✅
- 无新增硬编码密钥
- 无新增f-string拼SQL
- 无新增空catch
- 无新增XSS风险
- 无新增未保护端点
- SettingsPage 数字转换仅对纯数字字符串生效
- TerminalPage 路径验证排除控制字符和引号
- servers.py db_lock 使用 asyncio.Lock 正确序列化并发 commit
FINDING 列表
无
结论
☑ 审计通过,0 FINDING,可部署