0100ab2582
Move line-walk/delta/phase2/frontend audits and legacy memory into docs/archive/, add functional development SSOT, thin AGENTS/CLAUDE stubs, and regenerate changelog/audit indexes via consolidate_docs.py.
2.5 KiB
2.5 KiB
Phase 2 深审 — Wave P2-5(webssh.py 全文)
日期: 2026-06-04
范围: WebSSH WebSocket 端点 + 令牌签发链 + 前端连接
标准: standards/line-walk-audit-standard-v2.md 8 步
登记
| # | 文件 | 语言 | 行数 N | Read 范围 |
|---|---|---|---|---|
| 1 | server/api/webssh.py |
Python | 401 | 1–401 全文 |
| 2 | server/api/auth.py |
Python | 374 | 330–349(webssh-token 端点) |
| 3 | server/application/services/auth_service.py |
Python | 684 | 412–471(create_webssh_token) |
| 4 | server/api/dependencies.py |
Python | — | 167–180(check_dangerous_command) |
| 5 | frontend/src/composables/terminal/useTerminalSessions.ts |
TS | 749 | 277–311(令牌 + WS URL) |
入口表
| 方法 | 路径 | 鉴权 |
|---|---|---|
| WS | /ws/terminal/{server_id}?token= |
purpose=webssh JWT |
| POST | /api/auth/webssh-token |
JWT + server 存在 |
Closure 表
| H | 文件:行号 | 判定 | 理由 |
|---|---|---|---|
| H-Purpose | webssh.py:48-49 | SAFE | 拒绝非 webssh purpose |
| H-Bind | webssh.py:106-109 | SAFE | token server_id 须匹配路径 |
| H-TV | webssh.py:66-76 | SAFE | tv 校验;legacy updated_at +5s grace |
| H-Close | webssh.py:97-104 | SAFE | 缺 token→4001;无效→4401 |
| H-Issue | auth.py:334-346 | SAFE | 签发前 JWT + server/domain 校验 |
| H-Scope | auth_service.py:455-470 | SAFE | JWT 含 server_id + purpose + tv |
| H-Expire | auth_service.py:467 | SAFE | 15 分钟短期令牌 |
| H-WSQuery | webssh.py:88, useTerminalSessions:293 | RISK | ADR-011 query token(已接受) |
| H-Cred | webssh.py:126-135 | SAFE | key/password 配置检查 |
| H-Audit | webssh.py:137-146,353-366 | SAFE | connect/disconnect 审计 |
| H-Session | webssh.py:148-157,369-376 | SAFE | SshSession 创建/关闭 |
| H-DB | webssh.py:111-158 | SAFE | 长连接前关闭 DB session |
| H-Pool | webssh.py:167,337 | SAFE | acquire/release + stale retry |
| H-CmdLog | webssh.py:277-290,379-398 | SAFE | Enter 触发;2000 字符截断 |
| H-Danger | dependencies.py:167-180 | RISK | 危险命令仅 WARN 不阻断(设计) |
| H-Resize | webssh.py:293-296 | SAFE | cols/rows 边界默认 80×24 |
| H-Error | webssh.py:171,204 | SAFE | SSH 失败不向客户端泄露栈 |
len(H)=17, Closure=17
FINDING
无 P0/P1 新 FINDING。
DoD
- webssh.py 401 行全文 Read
- 令牌签发链交叉验证
- len(H) == Closure
- local_verify 通过
验证
bash scripts/local_verify.sh — 全绿