Skip to content

chore(security): 收敛 Web/Electron 鉴权凭据暴露风险(来自 PR #520 review) #523

@fennoai

Description

@fennoai

背景

在 PR #520 的 review 中,识别到 Web/Electron 鉴权链路存在凭据暴露风险,需要整理为可执行的合规安全待办并纳入修复计划。

问题清单(来自 review)

  1. web/src/api/wsClient.tsbuildWSURL() 通过 URL Query(?token=)传递鉴权 token。
    • 风险:token 可能暴露在代理日志、浏览器历史、崩溃上报、调试工具与中间链路观测系统。
  2. web/electron/preload.ts:预加载层向渲染进程暴露 getToken()
    • 风险:一旦渲染进程存在 XSS 或供应链注入,攻击者可直接读取长期凭据。

整改目标

  • 不在 URL 中传递任何长期或可复用凭据。
  • Renderer 不可直接读取长期 token,凭据能力收敛在主进程/受控通道。
  • 鉴权流程最小暴露、可审计、可回归测试。

待办清单

  • WebSocket 鉴权改造:移除 ?token= 方案,改为连接后通过受控消息体鉴权(或等价安全通道)。
  • Electron 凭据隔离:移除 preload 对长期 token 的直接暴露;由主进程代发鉴权请求,renderer 仅接收会话态结果。
  • 失效与轮换:补充 token 过期、刷新、撤销流程,确保异常场景不回退到不安全路径。
  • 最小日志策略:审查并确保日志、错误上报、调试输出中不包含敏感凭据。
  • 安全测试补齐:新增/更新单测与集成测试,覆盖凭据不落 URL、renderer 不可读 token、异常分支。
  • 文档更新:同步更新 Gateway/Web/Electron 鉴权流程与安全约束文档。

验收标准

  • 抓包、日志、浏览器历史、崩溃报告中均不出现 token 明文。
  • 渲染进程代码路径无法直接读取长期凭据。
  • 相关测试通过并可稳定复现安全断言。
  • 文档与实现一致,且明确凭据边界与职责分层。

关联

Metadata

Metadata

Assignees

Labels

questionFurther information is requested

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions