Files
Nexus/docs/audit/2026-05-27-audit-i18n-and-batch-btn-fix.md
2026-07-08 22:31:31 +08:00

4.0 KiB
Raw Permalink Blame History

审计记录 — 批量按钮修复 + 审计日志中文化

审计信息

  • 日期: 2026-05-27
  • 审计人: Claude (AI)
  • 触发原因: Bug修复 — 批量安装Agent按钮检测逻辑错误 + 审计日志详情统一中文

审计范围

文件 改动 状态
web/app/servers.html hasAgent 从 agent_api_key_set 改为 agent_version ☑ 已审
server/api/auth.py detail 改中文 ☑ 已审
server/api/servers.py detail 改中文 ☑ 已审
server/api/scripts.py detail 改中文 ☑ 已审
server/api/assets.py detail 改中文 ☑ 已审
server/api/settings.py detail 改中文 ☑ 已审
server/api/webssh.py detail 改中文 ☑ 已审
server/api/sync_v2.py detail 改中文 ☑ 已审
server/api/agent.py detail 改中文 ☑ 已审
server/background/script_execution_flush.py detail 改中文 ☑ 已审
web/app/audit.html 操作/目标类型中文化映射 ☑ 已审

审计8步结果

Step 1: 登记

  1. servers.html updateBatchBar() hasAgent 判断从 agent_api_key_set 改为 agent_version
  2. 10个后端文件的 AuditLog detail 字段从英文改为中文
  3. audit.html 新增 ACTION_NAMES / TARGET_NAMES 映射,操作列和目标列显示中文

Step 2: 全文Read

逐文件读取确认所有改动点

Step 3: 规则扫描H

  • H1: hasAgent=!!s.agent_version — agent_version 由 Agent 心跳写入(agent_version: "2.0.0"),无 Agent 时为 None — 逻辑正确
  • H2: agent_api_key_set 仅在详情面板的 noKey 检测中保留使用 — 该处语义正确(检测是否生成了 Key,是安装命令的前提条件)
  • H3: AuditLog detail 字符串改为中文 — 纯显示文本,用 textContent 赋值 — 无 XSS
  • H4: ACTION_NAMES / TARGET_NAMES 映射 — 前端 JS 常量,无用户输入 — 安全
  • H5: esc() 函数对所有审计日志字段做 HTML 转义 — 无 XSS

Step 4: Closure表

H 判定 依据
H1 PASS agent_version 更准确反映实际安装状态
H2 PASS agent_api_key_set 在安装命令上下文中语义正确
H3 PASS 中文字符串不影响安全性
H4 PASS 前端映射是静态常量
H5 PASS esc() 函数始终生效

Step 5: 入口表

入口 类型 来源
updateBatchBar 按钮 JS逻辑 服务器列表 API 数据
AuditLog detail 数据库写入 后端 API handler
audit.html 渲染 DOM渲染 审计日志 API 返回

Step 6: 输入→Sink

  • s.agent_version → 条件判断 → 按钮禁用状态 — 安全(不经过 DOM
  • 中文 detail 字符串 → MySQL → API → esc() → DOM — 安全
  • ACTION_NAMES[l.action]esc() → DOM — 安全

Step 7: 归类

web/app/servers.html              ~830行  1H  0FINDING
server/api/auth.py                 ~310行  1H  0FINDING
server/api/servers.py             ~1100行  1H  0FINDING
server/api/scripts.py              ~380行  1H  0FINDING
server/api/assets.py               ~230行  1H  0FINDING
server/api/settings.py             ~770行  1H  0FINDING
server/api/webssh.py               ~360行  1H  0FINDING
server/api/sync_v2.py              ~290行  1H  0FINDING
server/api/agent.py                ~330行  1H  0FINDING
server/background/script_execution_flush.py ~46行 1H  0FINDING
web/app/audit.html                 ~155行  1H  0FINDING
────────────────────────────────────────────────────
总计                               11文件  5H  0FINDING

Step 8: DoD

  • 明文密码/密钥暴露? — 否
  • 命令注入? — 否
  • SQL注入? — 否
  • XSS? — 否(全部 esc() 转义)
  • 静默吞错? — 否
  • 硬编码? — 否
  • 所有FINDING已修复? — 0 FINDING

FINDING 列表

结论

☑ 审计通过,0 FINDING,可部署