0.11.7: 代码审查查缺补漏(安全/并发/前端三轮审查修复)
安全: - 渠道 webhook 入站强制令牌鉴权(恒定时间比较+统一文案),企微签名官方算法; - 报表/概览/systemInfo 端点按 usage:read/audit:read/system:manage 授权; - sso_error 固定错误码;个人渠道令牌仅请求头;工具出站 Dialer.Control 消除 DNS rebinding TOCTOU;新增 channel:read/manage 权限;限流倍数上限 10。 并发/一致性: - 任务上报单条条件 UPDATE 防重放双提交;认领回收过期 claimed 任务; - 审批改先开通后落记录(幂等,无嵌套事务);聊天消息单事务落库; - 会话列表校验 AuthVersion;吊销先 Del 后 SRem;删工具保护调用历史; - rejected 冷却 24h;限流被拒补偿;maintenance 清理限流窗口。 前端/菜单: - 修复 gatewayChildren late-append 导致 reports/tenants/channels 菜单不可见; - 聊天改名 PUT 对齐;渠道编辑清空凭据防串写+启用开关; - 聊天响应防串扰;报表本地时区日期。
This commit is contained in:
@@ -511,3 +511,43 @@ PostgreSQL `text` 列拒绝写入 → 重试循环永远失败;inbox 的 Go `l
|
||||
least_conn 负载均衡,冷备含 master key 同步与恢复演练要点。
|
||||
4. 实测:真实 Agent 进程注册→心跳上线→custom/http 任务认领执行上报→
|
||||
管理端成功可见。
|
||||
|
||||
# 追加:第七轮代码审查与修复(2026-08-13)
|
||||
|
||||
三轮并行审查(安全/并发一致性/前端)后修复清单:
|
||||
|
||||
**安全(H)**
|
||||
- 渠道入站无鉴权:webhook 渠道强制 X-Inbound-Token 恒定时间校验,未配置令牌
|
||||
拒绝入站;渠道不存在与令牌无效统一 401 文案防枚举;body 读取改
|
||||
io.ReadAll+LimitReader。企微签名按官方算法补 echostr 参与签名。
|
||||
- 运维报表/概览/systemInfo 端点由"仅认证"改为按权限
|
||||
(usage:read/audit:read/system:manage);reload 错误不再回显内部细节。
|
||||
- 扫码回调 sso_error 只回传固定码(unbound/disabled/expired/login_failed),
|
||||
内部细节写服务端日志。
|
||||
- 个人渠道令牌只接受请求头(query 会进日志/历史),渠道存在性不再可枚举。
|
||||
- 工具出站 SSRF:Dialer.Control 在系统 connect 阶段校验目标 IP,消除
|
||||
DNS rebinding 的校验-拨号 TOCTOU 窗口。
|
||||
- 新增 channel:read/channel:manage 权限并映射进 superadmin/auditor,
|
||||
渠道端点不再复用 notification 权限;个人限流倍数上限 100→10。
|
||||
|
||||
**并发/一致性(H/M)**
|
||||
- 任务上报改为单条条件 UPDATE(claim_token+status 双守卫 + RowsAffected
|
||||
校验),并发/重放只有一个生效;认领支持回收过期 claimed 任务
|
||||
(available_at 即租约到期),节点崩溃不再永久卡死队列。
|
||||
- 资源申请审批改"先开通后落审批"两步式:Install/Grant 幂等且独立提交,
|
||||
不再事务内嵌套事务;渠道审批校验 enabled。
|
||||
- 聊天消息一轮(user+assistant)单事务落库,重试不产生孤儿/重复消息。
|
||||
- 会话列表校验 AuthVersion(改密/2FA 后旧会话不再展示);吊销先 Del 后
|
||||
SRem,Redis 抖动不再出现"列表已吊销但令牌仍有效"。
|
||||
- 删除工具前检查调用历史,有记录禁止删除(级联会清空报表数据)。
|
||||
- 工具审批 rejected 24h 冷却防通知轰炸;限流被拒调用补偿递减不占额度。
|
||||
- maintenance worker 每日清理 tool_rate_usage 过期窗口(保留 2 天)。
|
||||
|
||||
**前端/菜单(H/M)**
|
||||
- 网关菜单 late-append bug:Reports/Tenants/Channels 因 gatewayChildren
|
||||
cap 扩容指向旧数组而在菜单中不可见——已移到 push 前并加注释防复发。
|
||||
- 聊天会话改名 405:后端 PATCH 改 PUT 与前端 request.put 对齐。
|
||||
- 渠道编辑弹窗:openEdit 显式清空平台凭据字段(防跨渠道串写);
|
||||
新增启用开关,编辑不再静默重新启用停用渠道。
|
||||
- 聊天发送中切模型/会话:响应到达校验会话 id,丢弃迟到响应防串扰。
|
||||
- 报表默认日期改本地时区计算。
|
||||
|
||||
Reference in New Issue
Block a user