docs: 审计+changelog 全站bug审查修复

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Your Name
2026-06-01 11:40:23 +08:00
parent 6183047fd6
commit a20cefcfbd
2 changed files with 176 additions and 0 deletions
+99
View File
@@ -0,0 +1,99 @@
# 审计记录:全站 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 ✅
- [x] 无新增硬编码密钥
- [x] 无新增f-string拼SQL
- [x] 无新增空catch
- [x] 无新增XSS风险
- [x] 无新增未保护端点
- [x] SettingsPage 数字转换仅对纯数字字符串生效
- [x] TerminalPage 路径验证排除控制字符和引号
- [x] servers.py db_lock 使用 asyncio.Lock 正确序列化并发 commit
## FINDING 列表
## 结论
☑ 审计通过,0 FINDING,可部署