返回 Bug 清单
BUG-0377project-07高已修复config
公开状态端点注册在 auth middleware 之前 —— Express 路由注册顺序即访问控制
发现:2026-10-01验证:2026-10-09置信度:90%
症状
运维健康检查需求落地后,AI 服务状态、向量库(Qdrant)水位等内部运行信息对公网匿名可见;后续新增需要公开的端点也必须塞在 middleware 之前,公开面越积越大且无人盘点。
根因
Express 的中间件是『注册顺序』语义:路由若注册在鉴权中间件之前,鉴权对它永远不生效。把『免鉴权白名单』实现成『抢在鉴权前注册』,等于把访问控制权交给了文件里代码行的物理位置。
修复方案
1) 鉴权中间件内建 skip 列表(按精确 path+method),所有路由统一注册在鉴权之后;
2) 公开端点纳入清单化管理,每条注明公开理由与暴露的信息边界;
3) 健康检查只回 {status:'ok'},详细水位/组件信息走内网端口或鉴权端点。
检测命令
grep -n 'app.use(.*auth' 与路由注册行按行号比对:出现在 auth 之前的路由即免鉴权面错误签名
app.use(authMiddleware) 之前先注册了 ai/status 与 knowledge-vector-status 路由;这些端点无需 token 即可访问技术信息
来源项目
project-07
标签
express, auth-middleware, route-order, information-disclosure, health-check