Files
Nexus/docs/audit/2026-05-27-servers-info-display.md
T

77 lines
2.8 KiB
Markdown
Raw Normal View History

# 审计记录 — servers.html 系统版本拆分 + 空字段隐藏
## 审计信息
- **日期**: 2026-05-27
- **审计人**: Claude (AI)
- **触发原因**: UX改进 — 系统版本拆为发行版+内核平台,空字段隐藏不显示--
## 审计范围
| 文件 | 行数 | 状态 |
|------|------|------|
| web/app/servers.html | ~750 | ☑ 已审 |
## 审计8步结果
### Step 1: 登记 ✅
改动:1) 系统版本拆为「发行版」(siOSRelease) + 「内核平台」(siPlatform) 两卡片;2) 描述/目标路径/认证方式空值时隐藏整行
### Step 2: 全文Read ✅
全文读取 servers.html,确认所有改动点
### Step 3: 规则扫描H
- H1: `sys.os_release` / `sys.platform` — API返回的只读字符串,用 `textContent` 赋值,不经过 `innerHTML` — ✅ 无XSS
- H2: `s.description` / `s.target_path` / `s.auth_method` — 同上,`textContent` 赋值 — ✅ 无XSS
- H3: `style.display` 控制行显隐 — DOM属性操作,非用户输入 — ✅ 无注入
- H4: `<code id="siTarget">` — 使用语义标签包裹路径,textContent赋值 — ✅ 安全
- H5: grid从4列变5卡片,`lg:grid-cols-4` 自动换行 — ✅ 布局安全
- H6: `flex-wrap gap-x-6 gap-y-2` 替代 `grid-cols-3` — 空值隐藏后自动重排 — ✅ 布局正确
### Step 4: Closure表
| H | 判定 | 依据 |
|---|------|------|
| H1 | ✅ PASS | textContent不解析HTMLXSS不可能 |
| H2 | ✅ PASS | 同H1 |
| H3 | ✅ PASS | style.display值固定为空或none |
| H4 | ✅ PASS | code标签+textContent,安全 |
| H5 | ✅ PASS | 纯CSS布局,无安全影响 |
| H6 | ✅ PASS | flex-wrap自动适配,无安全问题 |
### Step 5: 入口表
| 入口 | 类型 | 来源 |
|------|------|------|
| sysInfoGrid 显示 | DOM渲染 | API返回的system_info JSON |
| sysInfoMeta 显隐 | DOM渲染 | API返回的server字段 |
### Step 6: 输入→Sink
- `sys.os_release``textContent` → DOM文本节点 — ✅ 安全(不经过innerHTML
- `sys.platform``textContent` → DOM文本节点 — ✅ 安全
- `s.description``textContent` → DOM文本节点 — ✅ 安全
- `s.target_path``textContent` → DOM文本节点(code标签)— ✅ 安全
- `s.auth_method` → 条件判断 → `textContent` → DOM文本节点 — ✅ 安全
### Step 7: 归类
```
web/app/servers.html 750行 6H 0FINDING
────────────────────────────────────────
总计 6H 0FINDING
```
### Step 8: DoD ✅
- ❌ 明文密码/密钥暴露? — 否
- ❌ 命令注入? — 否
- ❌ SQL注入? — 否(纯前端)
- ❌ XSS — 否(全部textContent
- ❌ 静默吞错? — 否
- ❌ 硬编码? — 否
- ✅ 所有FINDING已修复? — 0 FINDING
## FINDING 列表
## 结论
☑ 审计通过,0 FINDING,可部署