Files
Nexus/docs/audit/2026-05-27-servers-info-display.md
2026-07-08 22:31:31 +08:00

2.8 KiB
Raw Permalink Blame 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_releasetextContent → DOM文本节点 — 安全(不经过innerHTML
  • sys.platformtextContent → DOM文本节点 — 安全
  • s.descriptiontextContent → DOM文本节点 — 安全
  • s.target_pathtextContent → 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,可部署