ThinkPHP8.0新版还有哪些常见漏洞需要提前处理

星夢妙者

星夢妙者

2026-07-31

196人浏览

原创

thinkphp 8.0+高频漏洞仍存:反序列化链未断(validate类__call可触发rce)、路由变量未约束致路径遍历、多应用session配置失效引发越权、软删除缓存键缺失delete_time字段、cors credentials与*通配符冲突。

thinkphp8.0新版还有哪些常见漏洞需要提前处理

ThinkPHP 8.0 新版(含 8.0.x 至 8.1.0)虽已大幅强化安全机制,但实际项目中仍存在几类高频、隐蔽且易被忽视的漏洞点,不及时处理可能引发 RCE、会话劫持或数据泄露。重点不是“有没有漏洞”,而是哪些漏洞在升级后仍因配置或使用不当而持续生效。

反序列化链未完全切断,Validate 类仍是高危入口
8.0.0 初始版本中 think\Validate__call() 方法可被构造恶意参数触发 call_user_func_array,配合可控 $this->type 数组执行任意函数。虽 8.0.3+ 已对 type 字段加了白名单校验,但若项目手动扩展了验证规则并动态注册了危险回调(如 ['shell_exec' => 'shell_exec']),该链仍可复现。

  • 检查所有自定义验证器类,禁止将用户输入直接赋值给 $validate->type[$rule]
  • 确认 vendor/topthink/framework/src/think/Validate.php__call() 方法内是否保留 isset($this->type[$rule]) 且未做 in_array($rule, $safeRules) 校验
  • 若用到了 rule => ['is' => 'xxx'] 这类动态规则,需确保 xxx 是预定义安全方法名,而非拼接字符串

路由变量未约束导致路径遍历与注入穿透
ThinkPHP 8.0 默认允许 :id 匹配任意字符(包括 ../%2e%2e%2f),若控制器中直接拼接路径(如 file_get_contents('./data/' . $id . '.json')),就构成路径遍历。更隐蔽的是:当路由定义为 Route::get('api/:version/:action', ...) 且未限制 :version 时,攻击者传入 v1.5%00 可绕过后续正则校验,触发空字节截断或 JSON 解析异常。

  • 所有含变量的路由必须显式加正则约束:':version([a-z0-9._]+)'':action([a-zA-Z]+)'
  • 避免在业务逻辑中直接拼接用户可控路由变量到文件路径、SQL 字段名或 shell 命令中
  • 启用 config/route.php 中的 'url_domain_deploy' => true,防止子域名污染主路由上下文

多应用 Session 共享配置失效引发越权登录
8.0 多应用模式下,若 config/session.phpcookie_domain 写成 example.com(缺前置点)或 www.example.com(限死单域名),浏览器不会向 admin.example.com 发送 Cookie;更严重的是,若 Redis 存储未设统一 prefixwww 应用写入的 session 数据会被 api 应用读取失败,框架自动新建 session,导致用户登录态丢失——此时前端常重试登录,反而暴露账号密码。

  • cookie_domain 必须为 .example.com(带前导点)
  • prefix 必须为空字符串或全站一致(如 'sess_'),不能是 'www_sess_''api_sess_' 混用
  • app/middleware.php 中确认 \think\middleware\SessionInit::class 已启用且位于数组首位

模型缓存键未包含软删除字段,导致逻辑删除数据仍返回
启用 cache() 查询时,若缓存键未纳入 delete_time 字段,软删除后的记录仍从缓存中读出,用户看到已被“删除”的敏感信息。例如:UserModel::where('status', 1)->cache(['user_list'], 3600)->select(),当某条记录 later 被 delete(),缓存不变,接口持续返回该记录。

  • 所有涉及软删除模型的缓存键,必须显式包含 delete_time 值:cache(['user_list', $status, $user->delete_time ?? 0], 3600)
  • 或改用 withTrashed() + 缓存,但需同步调整业务逻辑判断

CORS 配置中 credentials 与通配符 Origin 同时启用
'allowed_origins' => ['*']'supports_credentials' => true 并存时,浏览器直接拒绝响应(违反 CORS 规范),前端报错 The value of the 'Access-Control-Allow-Origin' header must not be the wildcard '*' when the request's credentials mode is 'include'。这不是 ThinkPHP 的 bug,而是配置冲突。

PHP 8.5.5
PHP 8.5.5

PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。

下载
  • 若前端带 Cookie 请求(credentials: 'include'),allowed_origins 必须为具体域名数组,不可含 *
  • 开发环境可临时用 $_SERVER['HTTP_ORIGIN'] 动态匹配白名单,但生产环境必须硬编码可信源

这些漏洞大多不源于框架代码本身,而来自配置疏漏、开发习惯或旧项目迁移遗留。修复成本不高,但一旦触发,影响直接且难以追溯。

php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

php thinkphp php8

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
PyCharm安装配置教程合集
PyCharm安装配置教程合集

本专题汇总了PyCharm的完整安装部署与配置教程,涵盖从官网下载到Windows/Mac/Linux各平台安装包的选择与安装过程、环境变量配置及虚拟环境创建。同时整理了PIP镜像源更换、必要插件推荐、界面汉化等优化技巧,并附快捷键使用指南,助你快速搭建高效Python开发环境。

2026.08.05

0

19

Qt Creator编译运行使用教程
Qt Creator编译运行使用教程

围绕 Qt Creator 编译、运行、构建错误、断点调试、变量查看、调用栈、Debug与Release切换、编译输出和运行日志展开,帮助用户处理程序无法运行、断点不生效、找不到库文件、构建失败等问题。

2026.08.05

2

10

Qt Creator按钮响应设置方法
Qt Creator按钮响应设置方法

信号槽是 Qt 开发的核心机制。本专题整理 Qt Creator 中按钮点击、菜单触发、输入变化、窗口事件、自定义信号、自动连接槽函数和手动 connect 写法,帮助用户理解界面控件如何和 C++ 代码联动。

2026.08.05

0

10

Qt Creator新建项目使用教程
Qt Creator新建项目使用教程

本专题整理 Qt Creator 新建项目、打开已有工程、项目模板选择、目录结构、源文件管理、构建目录、运行配置和项目迁移方法,重点解决新手不知道选 qmake 还是 CMake、项目打不开、文件不参与编译等常见问题。

2026.08.05

0

10

maven常用插件使用大全
maven常用插件使用大全

PHP中文网精心整理Maven主流插件用法合集,涵盖编译、测试、打包等常用插件使用大全。从基础配置到进阶实战,详细解析各插件功能与适用场景,助你轻松掌握Maven自动化构建,解决Java项目开发痛点,是开发者必备的实用指南。

2026.08.05

0

31

PyCharm快速入门指南
PyCharm快速入门指南

本专题汇总了PyCharm快速入门的全套指南与教程,涵盖从官网下载安装、创建第一个Python项目、配置虚拟环境,到代码编辑、运行调试等基础操作,并整理了版本控制(Git)集成、常用高效快捷键及实用插件等进阶技巧,助你快速上手这款高效的Python IDE。

2026.08.05

2

17

PyCharm运行程序教程大全
PyCharm运行程序教程大全

本专题汇总了PyCharm运行程序的多种方式与详细操作步骤,涵盖通过主菜单Run、点击工具栏绿色三角图标、使用快捷键Shift+F10(或Ctrl+Shift+F10)等基本运行方法,以及配置运行/调试参数、设置PYTHONPATH环境变量、管理多脚本运行与交互式Python控制台调试等进阶技巧,助您全面掌握在PyCharm中高效运行与管理Python程序的方法。

2026.08.05

0

14

Maven零基础入门教程
Maven零基础入门教程

本合集由PHP中文网精心整理,提供Maven零基础入门到完整使用的保姆级教程。内容涵盖环境安装、核心配置、仓库管理及项目构建等核心知识点。通过详细步骤解析与代码示例,助你快速掌握Maven的依赖管理与自动化构建,轻松解决Java项目中的各种痛点,是新手入门与进阶的必备指南。

2026.08.05

2

18

Maven安装及配置教程
Maven安装及配置教程

本合集由PHP中文网精心整理,提供Maven安装配置与环境配置详情指南。内容涵盖Maven下载、解压安装、环境变量配置、阿里云镜像加速及本地仓库修改等全流程。教程通俗易懂,帮助开发者轻松解决依赖管理难题,快速掌握Maven核心构建技能,是Java开发者的必备实战指南。

2026.08.05

2

24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程