[U-05][low] 目录搜索的 LIKE 通配符没有转义;端编号 inline 与 mochi 内联客户端同名 #43

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

编号:U-05 严重级:low 工作线:身份、群、在线与认证基础(internal/app/identity、group、presence、internal/auth) 来源:审查 I-15
依赖:无 被依赖:无

结论与统一方案

  1. 目录搜索把 \、%、_ 转义后再拼进查询,并加 ESCAPE '\'。服务器生成的编号都以 e_ 开头,搜 e_ab 会同时匹配 exab…,搜 % 返回全部端。(审查 I-15)
  2. 把 inline 列为保留编号,注册、后台开通、批量导入都拒绝。mochi 内联客户端的 ClientID 就是 inline,同名端登录时 mochi 会把内联客户端当成旧会话接管;实际影响尚未复现(传输区审查的待核实第 6 条),但修复成本极低,先行规避。

改动文件

internal/app/presence/app.go;编号校验处(internal/protocol 的编号校验函数,或注册与后台开通的校验)。

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

编号校验若在 internal/protocol,属共享文件,改动只加一个保留字判断。

验收与测试

  • 同时存在 e_ab1 和 exab2 时,搜 e_ab 只返回前者。
  • 注册、开通、导入 inline 都被拒绝。

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

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

[I-15] 目录搜索的 LIKE 通配符没有转义

  • 严重级:low
  • 分类:逻辑
  • 现象与影响:服务器生成的编号都是 e_ 开头,搜 e_ab 会同时匹配到 exab…;搜 % 返回全部端。
  • 证据:presence/app.go:124-134。
  • 文档依据:DEVELOPMENT 6.5(466)「按编号前缀或名称包含匹配」。
  • 为何不是故意设计:没有偏差记录,_ 是编号允许的字符。
  • 解决方案:把 \、%、_ 转义后再拼进查询,并加上 ESCAPE '\'。
  • 改动文件:presence/app.go。
  • 与其他模块的交互/冲突风险:无。
  • 需补测试:同时存在 e_ab1 和 exab2 时,搜 e_ab 只返回前者。
  • 置信度:代码阅读确定。

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

**编号**:U-05 **严重级**:low **工作线**:身份、群、在线与认证基础(internal/app/identity、group、presence、internal/auth) **来源**:审查 I-15 **依赖**:无 **被依赖**:无 ### 结论与统一方案 1. 目录搜索把 `\`、`%`、`_` 转义后再拼进查询,并加 `ESCAPE '\'`。服务器生成的编号都以 `e_` 开头,搜 `e_ab` 会同时匹配 `exab…`,搜 `%` 返回全部端。(审查 I-15) 2. 把 `inline` 列为保留编号,注册、后台开通、批量导入都拒绝。mochi 内联客户端的 ClientID 就是 `inline`,同名端登录时 mochi 会把内联客户端当成旧会话接管;实际影响尚未复现(传输区审查的待核实第 6 条),但修复成本极低,先行规避。 ### 改动文件 `internal/app/presence/app.go`;编号校验处(`internal/protocol` 的编号校验函数,或注册与后台开通的校验)。 ### 与其他问题的交互 / 冲突说明 编号校验若在 `internal/protocol`,属共享文件,改动只加一个保留字判断。 ### 验收与测试 - 同时存在 `e_ab1` 和 `exab2` 时,搜 `e_ab` 只返回前者。 - 注册、开通、导入 `inline` 都被拒绝。 --- ### 问题明细(各区审查原文,证据含文件与行号) > 以下是本次复审各区审查报告的原文段落。A、M、I、P、S 开头的是原始发现编号(A 管理后台与网页、M 消息核心、I 身份认证群在线、P 传输平台部署、S SDK)。**解决方案以本 issue 上方的"结论与统一方案"为准**;原文里的方案与之不一致时,按上方执行。 #### [I-15] 目录搜索的 LIKE 通配符没有转义 - **严重级**:low - **分类**:逻辑 - **现象与影响**:服务器生成的编号都是 `e_` 开头,搜 `e_ab` 会同时匹配到 `exab…`;搜 `%` 返回全部端。 - **证据**:`presence/app.go:124-134`。 - **文档依据**:DEVELOPMENT 6.5(466)「按编号前缀或名称包含匹配」。 - **为何不是故意设计**:没有偏差记录,`_` 是编号允许的字符。 - **解决方案**:把 `\`、`%`、`_` 转义后再拼进查询,并加上 `ESCAPE '\'`。 - **改动文件**:`presence/app.go`。 - **与其他模块的交互/冲突风险**:无。 - **需补测试**:同时存在 `e_ab1` 和 `exab2` 时,搜 `e_ab` 只返回前者。 - **置信度**:代码阅读确定。 --- <sub>复审基线:main `4059a15`(2026-09-30)。编号说明、各工作线的合并顺序、共享文件归属见总览 #7。</sub>
nixevol added the P3-lowlane/identityreview-2026-09-30 labels 2026-09-30 13:57:01 +08:00
Author
Owner

已合入 origin/main 0c9b459。落地提交 8ca545a fix: 目录搜索转义 LIKE 通配符并拒绝编号 inline (#43)。

已合入 origin/main `0c9b459`。落地提交 `8ca545a` fix: 目录搜索转义 LIKE 通配符并拒绝编号 inline (#43)。
Sign in to join this conversation.