返回 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