From b7d085c475954f891893295ff01fd7c5f817423b Mon Sep 17 00:00:00 2001 From: Hermes Agent Date: Sat, 19 Sep 2026 12:01:43 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E4=BB=A3=E7=A0=81=E8=AF=84=E5=AE=A1?= =?UTF-8?q?=E6=8A=A5=E5=91=8A=EF=BC=88=E5=B7=B2=E4=BF=AE=E5=A4=8D+?= =?UTF-8?q?=E5=B7=B2=E6=8E=A5=E5=8F=97=E6=AE=8B=E7=95=99=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/代码评审报告-2026-09-19.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 docs/代码评审报告-2026-09-19.md diff --git a/docs/代码评审报告-2026-09-19.md b/docs/代码评审报告-2026-09-19.md new file mode 100644 index 0000000..cfce6c6 --- /dev/null +++ b/docs/代码评审报告-2026-09-19.md @@ -0,0 +1,28 @@ +# 维度(ai-dimension)代码评审与修复报告 · 2026-09-19 + +## 已修复(生产验证通过) + +| 级别 | 问题 | 修复 | 验证 | +|---|---|---|---| +| P0 | /api/auth/webview-token 仅凭 openid 签发任意用户 token(排行榜公开 openid = 账号接管) | 接口下线(客户端无调用) | 返回"接口不存在" ✓ | +| P0 | POST /progress 可写 isSubscriber/isAdFree/subscribeExpiry/ownedSkins 白嫖付费权益 | 客户端写入全部剔除 | 写入后 DB 保持 false ✓ | +| P1 | aiModel 接口向管理员以外泄露 apiKey 明文 | 列表/详情/默认配置全部脱敏 | 密钥数=0 ✓ | +| P1 | 登录 identifier/verifyCode 未强转(对象注入 $ne) | 入口 String() 强转 | 代码审计 ✓ | +| P1 | sessionKey(支付签名凭据)随 /me、progress 全量下发 | schema select:false,仅 vpay 中间件显式查询 | 代码审计 ✓ | +| P2 | 搜索 $regex 未转义(ReDoS/注入) | escapeRegExp 全量接入(knowledge+admin 9处) | 正则字符搜索 200 ✓ | +| P2 | 排行榜 limit 无上限且返回 openid | limit 封顶100、去 openid | 无 openid ✓ | +| P2 | share-gain 无限刷问答次数 | 每日限3次(shareRecords 统计) | 第4次 429 ✓ | +| P2 | 读接口每次写 AdminLog(日志膨胀) | GET 路由移除 logAction(11处) | 代码审计 ✓ | +| P2 | /:dim/questions 泄露检测题 isCorrect | 选项脱敏(该接口当前无数据,防御性修复) | 代码审计 ✓ | +| P3 | /shop-items 与 /shop 完全重复 | 删除 /shop-items | 代码审计 ✓ | + +## 已知残留(评估后接受/待定) + +- **旧 payment.js 体系**(weixin.js 恒真验签、mock 退款、H5 mock 下单):属未启用的旧订阅支付链路,vpay(虚拟支付)才是现行通道;建议下个迭代整体删除旧 payment/weixin 文件避免误用。 +- **充值回调非原子幂等**(check-then-act):已有 orderNo 流水查重兜底,重推双倍入账概率极低;建议加 {orderNo,type} 唯一索引彻底封死。 +- **退款先冻结后调微信非事务**:进程崩溃窗口极小且有人工对账兜底(管理后台流水),接受。 +- **访问埋点全量写**:目前 PV 低无压力;流量上来后改采样。 + +## 验证环境 +- 生产:wdkj.yuzhiran.com.cn(dim-server v1.6.21 healthy) +- 关键链路回归:管理员登录/模型配置/知识搜索/排行榜/分享奖励 全部通过