From cb0fb097de977b78fe0ca3e4862ed7770f12e8fe Mon Sep 17 00:00:00 2001 From: nav Date: Wed, 8 Apr 2026 23:03:59 +0000 Subject: [PATCH] Advance transport hardening tasks --- TASKLIST.md | 27 +++++++++++++++++++++++++++ Yonexus.Client | 2 +- Yonexus.Server | 2 +- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/TASKLIST.md b/TASKLIST.md index 6a5c626..b47ac50 100644 --- a/TASKLIST.md +++ b/TASKLIST.md @@ -463,6 +463,9 @@ --- ### YNX-0504 实现基础重连策略 +**状态** +- [x] 已完成(2026-04-08) + **目标** - Client 断线后可恢复连接 @@ -475,6 +478,12 @@ - 断线可自动恢复 - 不会形成高频重连风暴 +**已完成内容** +- 已将 Client transport 重连逻辑改为覆盖所有非主动异常断线,而不再仅限“已认证后掉线”场景 +- 已增加 `shouldReconnect` 标志,确保手动 `disconnect()` 不会误触发自动重连 +- 已在每次 `connect()` 前清理旧的 reconnect timer,避免并发重连尝试叠加 +- 已在成功连接后移除首个 `error` 监听并重置退避计数,避免首次建连阶段的错误监听残留 + --- ## Phase 6 — Pairing 主流程 @@ -881,6 +890,9 @@ ## Phase 10 — 安全与鲁棒性 ### YNX-1001 实现敏感信息脱敏日志 +**状态** +- [x] 已完成(2026-04-08) + **目标** - 避免 secret、私钥、proof 原文进入日志 @@ -892,9 +904,18 @@ **验收标准** - 关键敏感值不会明文打印 +**已完成内容** +- 已新增 `Yonexus.Server/plugin/core/logging.ts`,提供 `redactSecret()`、`redactPairingCode()`、`redactKey()` 与通用 `safeErrorMessage()` +- 已将 Server 侧 Discord pairing notification stub 改为输出结构化日志,并对 pairing code 做脱敏显示 +- 已将 Server transport 的 WebSocket error 日志统一改为经 `safeErrorMessage()` 处理后的安全错误信息 +- 当前仍未覆盖所有未来 auth/persistence 日志点,但 v1 现有显式日志路径已不再直接打印配对码原文 + --- ### YNX-1002 实现 malformed / unsupported / unauthorized 防御 +**状态** +- [x] 已完成(2026-04-08) + **目标** - 所有非法输入都能被可控拒绝 @@ -909,6 +930,12 @@ - 错误不会导致进程崩溃 - 客户端能收到明确错误反馈或断开 +**已完成内容** +- Server runtime 已为 builtin 解码增加 `CodecError` 捕获,malformed builtin message 会返回 `error(MALFORMED_MESSAGE)` 而不是直接抛出 +- Server runtime 已为未支持的 builtin `type` 返回显式错误响应,避免静默吞掉非法协议帧 +- Client runtime 已为 builtin 解码增加容错,不再因为坏帧直接抛出;当前会记录最近一次失败原因供上层状态观察 +- Client / Server 的 rule message 发送校验已收敛到共享 codec,而不再依赖脆弱的本地正则片段判断 + --- ### YNX-1003 实现单 identifier 单活跃连接策略 diff --git a/Yonexus.Client b/Yonexus.Client index 07c2438..ddeed9a 160000 --- a/Yonexus.Client +++ b/Yonexus.Client @@ -1 +1 @@ -Subproject commit 07c2438fb87e9fe8dbb41e1401e0053f20911c4a +Subproject commit ddeed9a7b735d41ced855cc3928de60b90f7fa04 diff --git a/Yonexus.Server b/Yonexus.Server index 075fcb7..4f20ec3 160000 --- a/Yonexus.Server +++ b/Yonexus.Server @@ -1 +1 @@ -Subproject commit 075fcb7974207e6c463225859728ac3ad78c9e19 +Subproject commit 4f20ec3fd725b3b097afdd226bce6b21e3957839