[H-05][medium] 端的默认延迟没有上限:后台可设出永远发不出消息的端,极大值还会溢出 #48

Closed
opened 2026-09-30 13:57:03 +08:00 by nixevol · 1 comment
Owner

编号:H-05 严重级:medium 工作线:管理后端(internal/admin) + 后台网页(web/) 来源:审查 A-12
依赖:无 被依赖:无

结论与统一方案

采用审查 A-12 的方案:validateEndpointFields 增加 MaxScheduleSeconds 参数,开通、修改、导入三处都限制 0 ≤ 默认延迟 ≤ 上限,与端自己改默认延迟时的校验一致。界面的 n-input-number 加 :max 与上限提示由网页线在 W-05 完成。

改动文件

internal/admin/endpoints.go、endpoints_csv.go。

与其他问题的交互 / 冲突说明

与 H-03、H-04 相邻,管理后端线内顺序合入。

验收与测试

三个入口超过上限都返回 400 或对应的行错误。


问题明细(各区审查原文,证据含文件与行号)

以下是本次复审各区审查报告的原文段落。A、M、I、P、S 开头的是原始发现编号(A 管理后台与网页、M 消息核心、I 身份认证群在线、P 传输平台部署、S SDK)。解决方案以本 issue 上方的"结论与统一方案"为准;原文里的方案与之不一致时,按上方执行。

[A-12] 默认延迟没有上限,端可能再也发不出消息

  • 严重级:medium
  • 分类:逻辑 / 参数校验
  • 现象与影响:
    • 开通、修改、导入都只检查 >= 0。设置超过 max_schedule_seconds 的值后,这个端每条不带显式延迟的消息都会以 bad_request 失败,看起来像故障。
    • delaySec*1000 在极大值时会溢出。
    • 端自己改默认延迟时是有上限的,两边不一致。
  • 证据:
    • endpoints.go:232-240,344-348,631-633。
    • endpoints_csv.go:183-191。
    • 端侧校验:identity/self.go:47-51。
    • 发送时拒绝:message/submit.go:303-312。
  • 文档依据:PRD F11(约 276 行)"最远可定到 365 天后(可配置)";F12。
  • 为何不是故意设计:同一个字段在端侧有校验,后台没有。
  • 解决方案:validateEndpointFields 增加参数 h.cfg.Limits.MaxScheduleSeconds,限制 0 ≤ 延迟 ≤ 上限,开通、修改、导入三处都用。前端 n-input-number 加 :max,并在输入框旁提示上限。
  • 改动文件:endpoints.go、endpoints_csv.go、EndpointsView.vue。
  • 交互/冲突风险:无。
  • 需补测试:三个入口超上限都返回 400 或对应的行错误。
  • 置信度:代码阅读确定

复审基线:main 4059a15(2026-09-30)。编号说明、各工作线的合并顺序、共享文件归属见总览 #7。

**编号**:H-05 **严重级**:medium **工作线**:管理后端(internal/admin) + 后台网页(web/) **来源**:审查 A-12 **依赖**:无 **被依赖**:无 ### 结论与统一方案 采用审查 A-12 的方案:`validateEndpointFields` 增加 `MaxScheduleSeconds` 参数,开通、修改、导入三处都限制 0 ≤ 默认延迟 ≤ 上限,与端自己改默认延迟时的校验一致。界面的 `n-input-number` 加 `:max` 与上限提示由网页线在 W-05 完成。 ### 改动文件 `internal/admin/endpoints.go`、`endpoints_csv.go`。 ### 与其他问题的交互 / 冲突说明 与 H-03、H-04 相邻,管理后端线内顺序合入。 ### 验收与测试 三个入口超过上限都返回 400 或对应的行错误。 --- ### 问题明细(各区审查原文,证据含文件与行号) > 以下是本次复审各区审查报告的原文段落。A、M、I、P、S 开头的是原始发现编号(A 管理后台与网页、M 消息核心、I 身份认证群在线、P 传输平台部署、S SDK)。**解决方案以本 issue 上方的"结论与统一方案"为准**;原文里的方案与之不一致时,按上方执行。 #### [A-12] 默认延迟没有上限,端可能再也发不出消息 - 严重级:medium - 分类:逻辑 / 参数校验 - 现象与影响: - 开通、修改、导入都只检查 `>= 0`。设置超过 `max_schedule_seconds` 的值后,这个端每条不带显式延迟的消息都会以 `bad_request` 失败,看起来像故障。 - `delaySec*1000` 在极大值时会溢出。 - 端自己改默认延迟时是有上限的,两边不一致。 - 证据: - `endpoints.go:232-240,344-348,631-633`。 - `endpoints_csv.go:183-191`。 - 端侧校验:`identity/self.go:47-51`。 - 发送时拒绝:`message/submit.go:303-312`。 - 文档依据:PRD F11(约 276 行)"最远可定到 365 天后(可配置)";F12。 - 为何不是故意设计:同一个字段在端侧有校验,后台没有。 - 解决方案:`validateEndpointFields` 增加参数 `h.cfg.Limits.MaxScheduleSeconds`,限制 0 ≤ 延迟 ≤ 上限,开通、修改、导入三处都用。前端 `n-input-number` 加 `:max`,并在输入框旁提示上限。 - 改动文件:`endpoints.go`、`endpoints_csv.go`、`EndpointsView.vue`。 - 交互/冲突风险:无。 - 需补测试:三个入口超上限都返回 400 或对应的行错误。 - 置信度:代码阅读确定 --- <sub>复审基线:main `4059a15`(2026-09-30)。编号说明、各工作线的合并顺序、共享文件归属见总览 #7。</sub>
nixevol added the P2-mediumlane/adminlane/webreview-2026-09-30 labels 2026-09-30 13:57:03 +08:00
Author
Owner

已合入 origin/main 0c9b459。落地提交 b3787a0 fix: 校验端默认延迟不超过调度上限 (#48)。

已合入 origin/main `0c9b459`。落地提交 `b3787a0` fix: 校验端默认延迟不超过调度上限 (#48)。
Sign in to join this conversation.