2.3 KiB
2.3 KiB
2026-05-26 — Terminal左侧导航+右侧面板 + SSH密钥修复 + 认证切换清理 审计
审计信息
- 日期: 2026-05-26
- 审计人: Claude (AI)
- 触发原因: Bug修复(SSH密钥双重加密+认证切换残留) + 功能新增(Terminal侧边栏/面板) + 安全加固
审计范围
| 文件 | 行数 | 状态 |
|---|---|---|
| web/app/terminal.html | 278 | ☑ 已审 |
| web/app/servers.html | 978 | ☑ 已审 |
| server/api/servers.py | 1173 | ☑ 已审 |
审计8步结果
Step 1: 登记 ✅
3个文件,共2429行
Step 2: 全文Read ✅
全部Read至EOF
Step 3: 规则扫描H
- terminal.html: 3H (H1 innerHTML, H2 esc()完备性, H10 外部输入→DOM)
- servers.html: 7H (S1 innerHTML×7, S10 CSV错误, S11 属性突破×2, L7 null清除)
- servers.py: 6H (S2 命令注入×3, S4 大规模赋值, S7 双重加密, S8 认证切换清理)
Step 4: Closure表
| # | H | 判定 | 依据 |
|---|---|---|---|
| C1 | H1 innerHTML | SAFE | 所有${}为整数或esc() |
| C2 | H2 esc() | SAFE | textContent→innerHTML + 双引号转义 |
| C3 | H10 外部输入 | SAFE | msg.message/ev.reason经esc() |
| C4 | S1 innerHTML×7 | SAFE | 全部esc()或整数 |
| C5 | S10 CSV错误 | SAFE | esc()全字段 |
| C6 | S11 属性突破 | SAFE | esc(p.id)含双引号转义 |
| C7 | L7 null清除 | SAFE | Pydantic exclude_unset+setattr |
| C8 | S2 命令注入 | SAFE | shlex.quote()全参数 |
| C9 | S4 大规模赋值 | SAFE | ALLOWED_FIELDS白名单 |
| C10 | S7 双重加密 | SAFE | 预设存明文+单次加密 |
| C11 | S8 认证切换 | SAFE | setdefault+ssh_key_configured联动 |
Step 5: 入口表 ✅
Step 6: 输入→Sink ✅
(详见本次会话完整审计输出)
Step 7: 归类
terminal.html 278行 3H 0FINDING
servers.html 978行 7H 0FINDING
servers.py 1173行 6H 0FINDING
─────────────────────────────────────
总计 16H 0FINDING
Step 8: DoD ✅
- 安全: 0 FINDING ✅
- 逻辑: 空catch/except已消除 ✅
- 认证切换联动清理完整 ✅
- 双重加密已修复 ✅
- 所有innerHTML经esc() ✅
- 命令注入防护 ✅
- 大规模赋值防护 ✅
- 审计日志完整 ✅
FINDING 列表
无
结论
☑ 审计通过,0 FINDING,可部署