编号:B-07 严重级:medium 工作线:broker(internal/broker) 来源:审查 P-12 依赖:无 被依赖:无
采用审查 P-12 的方案:broker.New 给 mochi 单独的 logger,包一层 slog.Handler,把类型为 packets.Packet 或 *packets.Packet 的属性替换成摘要(包类型、QoS、包号、主题、正文长度),其余原样转发给原来的 handler。同时核对 broker 自身日志没有打印 payload、password、session_token。
broker.New
slog.Handler
packets.Packet
*packets.Packet
PRD §8 明确要求日志无正文、无密码、无令牌,属于安全缺陷。默认 info 级别就能触发(同一连接发第二个 CONNECT、3.1.1 设备 QoS1 发到别人的主题等)。
internal/broker/broker.go 或新建 internal/broker/log.go。
internal/broker/broker.go
internal/broker/log.go
独立,不改钩子逻辑;与 broker 线其他 issue 只在 New 函数相邻。
New
session_token
以下是本次复审各区审查报告的原文段落。A、M、I、P、S 开头的是原始发现编号(A 管理后台与网页、M 消息核心、I 身份认证群在线、P 传输平台部署、S SDK)。解决方案以本 issue 上方的"结论与统一方案"为准;原文里的方案与之不一致时,按上方执行。
slog.Default()
"pk"
Connect.Password
json:"password"
broker.go:147-151
server.go:520-530
678-682
733-737
866-874
clients.go:196-201
server.go:1016-1019
packets/packets.go:151-156
log.go
复审基线:main 4059a15(2026-09-30)。编号说明、各工作线的合并顺序、共享文件归属见总览 #7。
4059a15
已合入 origin/main 0c9b459。落地提交 0b9ce03 fix: 认证失败不泄漏连接表并脱敏 mochi 整包日志 (#14)。
0c9b459
0b9ce03
No dependencies set.
The note is not visible to the blocked user.
编号:B-07 严重级:medium 工作线:broker(internal/broker) 来源:审查 P-12
依赖:无 被依赖:无
结论与统一方案
采用审查 P-12 的方案:
broker.New给 mochi 单独的 logger,包一层slog.Handler,把类型为packets.Packet或*packets.Packet的属性替换成摘要(包类型、QoS、包号、主题、正文长度),其余原样转发给原来的 handler。同时核对 broker 自身日志没有打印 payload、password、session_token。PRD §8 明确要求日志无正文、无密码、无令牌,属于安全缺陷。默认 info 级别就能触发(同一连接发第二个 CONNECT、3.1.1 设备 QoS1 发到别人的主题等)。
改动文件
internal/broker/broker.go或新建internal/broker/log.go。与其他问题的交互 / 冲突说明
独立,不改钩子逻辑;与 broker 线其他 issue 只在
New函数相邻。验收与测试
session_token。问题明细(各区审查原文,证据含文件与行号)
[P-12] mochi 日志会把整包写出来:CONNECT 里的密码和会话令牌、PUBLISH 的正文
slog.Default()直接交给了 mochi。mochi 在处理包出错时会用 Warn 级别记录整个包(字段名"pk")。packets.Packet的字段都是导出的,Connect.Password还带json:"password"标签,JSON 日志会把密码和 Payload 以 base64 写出来。broker.go:147-151;mochiserver.go:520-530、678-682、733-737、866-874;clients.go:196-201;server.go:1016-1019;packets/packets.go:151-156。broker.New里给 mochi 单独的 logger:包一层slog.Handler,把类型为packets.Packet或*packets.Packet的属性替换成摘要(包类型、QoS、包号、主题、正文长度),其余原样转发给原来的 handler。internal/broker/broker.go(或新建log.go)复审基线:main
4059a15(2026-09-30)。编号说明、各工作线的合并顺序、共享文件归属见总览 #7。已合入 origin/main
0c9b459。落地提交0b9ce03fix: 认证失败不泄漏连接表并脱敏 mochi 整包日志 (#14)。