php 8.2.35修复的是cve-2026-109618和cve-2026-109619两个核心层远程代码执行漏洞,与验证码绕过等应用层逻辑缺陷无关;验证码问题须检查业务代码、框架配置或中间件实现。

PHP 8.2.35 **不修复验证码绕过漏洞**。它修复的是两个核心层远程代码执行漏洞(CVE-2026-109618 和 CVE-2026-109619),与验证码逻辑完全无关。
验证码绕过是应用层逻辑缺陷,出在业务代码、框架配置或中间件行为上,不是 PHP 解释器本身的问题。升级到 PHP 8.2.35 后,如果验证码仍可重复使用、跳过校验或被暴力破解,问题一定在你自己的代码或所用 CMS/框架的实现里。
为什么 php -v 显示 8.2.35 但验证码还能绕过?
因为 PHP 版本号只代表运行环境安全,不代表你的应用逻辑安全。常见原因包括:
- 服务端未校验
$_SESSION['captcha_value']是否存在或是否已销毁 - 验证码校验后没调用
unset($_SESSION['captcha_value'])或session_destroy() - 前端禁用 JS 后,后端未做二次校验(比如仅靠前端隐藏域或 disabled 属性)
- 使用了过时的第三方验证码库(如旧版
securimage或自研无状态实现) - 某些 CMS 插件把验证码校验逻辑放在 JS 里,请求直接绕过 PHP 入口
如何定位你项目中的验证码绕过点?
重点检查三处实际处理逻辑,而不是看 PHP 版本:
修复 Core bailout 状态损坏安全问题,以及 BZ2、DOM、PDO、Opcache/JIT 内存与执行错误,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。
-
验证码生成处:是否写入 session 且设置了正确作用域(
session_start()是否被跳过?是否用了session_name('myapp')却没在验证时指定?) -
表单提交入口:是否读取并比对
$_POST['captcha']与$_SESSION['captcha_value']?是否在比对后立即清空 session 键? - 登录/注册等关键路由:是否在控制器最开始就做了验证码校验?有没有可能被中间件、路由别名或异常分支绕过?
临时缓解但不能替代修复的配置项
如果你暂时无法改代码,可在 php.ini 或站点配置中加一层防护(仅限 Apache / Nginx + PHP-FPM 场景):
- 关闭上传进度功能(切断已知利用链之一):
session.upload_progress.enabled = Off - 限制 multipart 请求大小,避免构造超大 payload 触发 OOM 路径:
post_max_size = 8M、upload_max_filesize = 2M - 强制 session cookie 为 HttpOnly + Secure:
session.cookie_httponly = 1、session.cookie_secure = 1(防 XSS 辅助绕过)
注意:这些只是辅助手段,不能阻止纯服务端逻辑绕过。
真正需要修复的地方,是你自己写的那几行验证码比对代码——它可能藏在login.php、AuthController.php 或某个插件的 verify_captcha() 函数里。PHP 版本再新,也不会自动帮你补上漏掉的 if (!hash_equals(...)) die('invalid');。php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










