返回 Bug 清单
BUG-0934project-86中已修复backend-auth

移除 /api/user/assistant/** permitAll 裸奔

发现:2026-10-09验证:2026-10-27置信度:70%

症状

commit cd174ca03be9 (2026-09-17) fix(security): 移除 /api/user/assistant/** permitAll 裸奔

根因

根因:SecurityPermitRules L289-292 三条 permitAll 注释自标'联调阶段临时放通;正式上线前移除'。

修复方案

修复 0 行,删除 5 行。改动文件: backend/src/main/java/com/greenfield/gift/security/SecurityPermitRules.java

错误签名

fix(security): 移除 /api/user/assistant/** permitAll 裸奔 根因:SecurityPermitRules L289-292 三条 permitAll 注释自标'联调阶段临时放通;正式上线前移除'。
当前 SmartAssistantService chat() 不区分调用来源,任何人(未登录/非微信)可带 sessionId 刷 LLM Token。

修复:删除三条 permitAll matcher,让 /api/user/assistant/{chat,history,session/**}
走 Spring 默认 authenticated() — 小程序 request.js 自动带 token(L178),
有效则放行,空 token 401 跳登录。

三层安全收益:
1. Token 消耗可关联真实用户 → 限额/告警/审计有据
2. sessionId 虽仍可被伪造,但必须先过 JWT → 门槛陡增
3. 为后续 SmartAssistantService 引入 SecurityUtils.getUserId() 注入铺

技术信息

来源项目

project-86

涉及文件

backend/src/main/java/com/greenfield/gift/security/SecurityPermitRules.java

标签

git-sweep, auto-ingested, project-86, mcp-reported, source-agent