ThinkPHP 8.0.5 不存在官方披露的“注解路由权限绕过漏洞”;当前权威漏洞库及官方公告均未收录该版本相关CVE或CNVD编号漏洞,常见误判源于路由未生效、中间件未正确绑定或自定义鉴权逻辑缺陷。

ThinkPHP 8.0.5 不存在官方披露的“注解路由权限绕过漏洞”。截至目前(2026年10月27日),国家信息安全漏洞库(CNVD)、CVE 官方列表、ThinkPHP 官方安全公告及可信技术社区均未收录编号为 CVE 或 CNVD 的、针对 v8.0.5 版本的注解路由权限绕过类漏洞。
你可能遇到的是以下三类情况之一,需分别处理:
注解路由本身未生效,误判为“权限绕过”
-
#[Get]或#[Route]写了但访问 404 或直接进入控制器方法,看似“没校验”,实则是路由根本没注册成功。 - 常见原因:
- 未安装
topthink/think-annotation扩展 - 未在
app/bootstrap.php中调用AnnotationRoute::init() -
config/annotation.php中'route' => ['enable' => false](默认是false) - 控制器不在
app/controller或config/annotation.php配置的controllers列表中(如多应用时漏配app\admin\controller) - 方法不是
public,注解解析器直接跳过
- 未安装
✅ 解决:运行
php think route:list,确认目标路由是否出现在输出中。若无,则修复上述任一配置断点。
PHP 8.5.12下载修复 Core bailout 状态损坏安全问题,以及 BZ2、DOM、PDO、Opcache/JIT 内存与执行错误,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。
中间件未绑定到注解路由,导致鉴权缺失
-
#[Route]支持middleware参数,但#[Get]不支持;若错误地在#[Get]上写middleware="auth",该参数被完全忽略,且不报错、不警告。 - 示例错误写法(无效):
#[Get("user/:id", middleware: "auth")] // ← middleware 被静默丢弃 public function read($id) { } - 正确写法(必须用
#[Route]):#[Route("user/:id", method: "GET", middleware: "auth")] public function read($id) { }
自定义权限逻辑存在缺陷,与注解无关
- 比如中间件里只校验登录态,但未校验角色/权限字段;或控制器方法内
if (!auth()->isManager()) { abort(403); }被遗漏; - 或使用了全局中间件但未对注解路由显式启用(TP8 默认不自动注入中间件到注解路由)。
✅ 解决:检查中间件是否真实执行(可在中间件 handle 方法中加
Log::info('auth middleware hit')验证),并确认#[Route]是否显式声明了middleware。
不复杂但容易忽略
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










