Files
Nexus/docs/changelog/2026-05-30-settings-inspection.md
T
2026-05-30 21:18:34 +08:00

2.8 KiB
Raw Blame History

Changelog — Settings 页面巡检 + Telegram Bot Token 脱敏

日期: 2026-05-30
类型: 安全修复 + 功能验证
涉及文件:

  • server/api/settings.py — SENSITIVE_KEYS 加入 telegram_bot_token + reveal-token 端点
  • web/app/settings.html — Telegram 区域独立渲染 + Bot Token 脱敏 UI

变更摘要

1. Telegram Bot Token 脱敏 (安全修复)

问题: GET /api/settings/ 以明文返回 Bot Token 8743165040:AAH_YGffcj2mdqSAx1sHXjspvUFzJ_kVC2I,违反安全铁律(API 响应不得返回敏感凭据明文)。

修复:

  • 后端 SENSITIVE_KEYS 新增 telegram_bot_tokenGET 响应返回脱敏值 87431650...
  • 新增 POST /api/settings/telegram/reveal-token 端点(密码验证 + 审计日志)
  • 前端 Telegram 区域从通用 SECTIONS 循环中分离,单独渲染:
    • Bot Token 默认脱敏显示 + 「显示」按钮(需密码验证)
    • 验证后切换为 password 类型输入框 + 显示/隐藏切换
    • Chat ID 保持正常编辑(非敏感信息)

2. Settings 页面功能巡检结果

功能 状态 备注
品牌设置保存 正常 PUT system_name → 200
告警阈值保存 正常 PUT cpu_alert_threshold → 200 + 热更新
通知 toggle 开关 正常 乐观 UI 更新 + API 同步
手动 IP 添加/删除 正常 POST + DELETE → 200
IP 白名单开关 正常 confirm 弹窗 + toggle
订阅地址保存 正常 触发后台刷新
Telegram Chat ID 检测 正常 getUpdates → 2 个对话
不可变 Key 拒绝 正常 PUT api_key → 403
TOTP 状态显示 正常 已启用卡片 + 重新绑定/禁用按钮
Bot Token 脱敏 正常 87431650... + 显示按钮
API Key 脱敏+复制 正常 de3a155d... + 显示/复制
订阅 IP 显示 正常 6 个节点 IP
手动 IP 空状态 正常 显示「(空)」
告警通知 8 项 toggle 正常 全部可切换

3. 已排除的假问题

  • heartbeat_timeout 映射: 已存在于 DB_OVERRIDE_MAP (config.py:115)Task 2 关闭
  • 手动 IP 与订阅 IP 重叠: 旧页面缓存(ip-allowlist 路由修复前),刷新后正常
  • 「等待首次刷新...」: 服务重启后时序问题,refresh 完成后刷新页面正常显示

动机

安全审计发现 Telegram Bot Token 明文暴露,需要与 API_KEY/SECRET_KEY 同等级别保护。

是否需迁移/重启

  • 需要重启后端服务(新增 API 端点 + SENSITIVE_KEYS 变更)

验证方式

  1. GET /api/settings/ → telegram_bot_token 值为 87431650...
  2. POST /api/settings/telegram/reveal-token + 密码 → 返回完整 token
  3. 前端 settings 页面 → Bot Token 显示脱敏 + 「显示」按钮可正常揭示
  4. ruff check → 0 errors