PHP 8.2.35 不修复会话劫持漏洞,仅修复两个RCE漏洞(CVE-2026-109618、CVE-2026-109619);会话劫持属应用层问题,需通过安全配置、代码加固及上下文绑定来防范。

PHP 8.2.35 本身不修复会话劫持漏洞——它只修复两个特定的 RCE 漏洞(CVE-2026-109618 和 CVE-2026-109619),而会话劫持属于应用层逻辑问题,不在该补丁覆盖范围内。
PHP 8.2.35 和会话劫持无关
官方安全公告明确指出,本次更新的目标是修复内存耗尽导致的状态破坏(CVE-2026-109618)和请求间全局状态残留(CVE-2026-109619)。这两个漏洞可能被用于远程代码执行,但它们不涉及 session ID 生成、传输、验证或销毁逻辑。会话劫持的成因(如明文传输、固定 ID、未绑定 IP/User-Agent、长期有效等)仍需由开发者在业务代码和配置中控制。
会话劫持必须靠配置和代码加固
即使升级到 PHP 8.2.35,若以下任一条件成立,会话劫持风险依然存在:
-
session.cookie_httponly或session.cookie_secure在php.ini中设为Off - 登录后未调用
session_regenerate_id(true)切换 session ID - 使用默认文件存储且
/var/lib/php/sessions权限宽松(如 world-readable) - 未设置
session.gc_maxlifetime或设得过大(如 86400 秒) - 前端通过 URL 传递
PHPSESSID(而非仅 Cookie)
升级 PHP 8.2.35 后必须同步检查的会话配置
确认 php.ini 中以下关键项已按生产环境要求启用:
修复 Core bailout 状态损坏安全问题,以及 BZ2、DOM、PDO、Opcache/JIT 内存与执行错误,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。
立即学习“PHP免费学习笔记(深入)”;
-
session.cookie_httponly = On—— 阻止 JS 访问 cookie -
session.cookie_secure = On—— 强制仅 HTTPS 传输(仅当全站 HTTPS 时启用) -
session.use_strict_mode = 1—— 拒绝客户端传入的非法 session ID -
session.cookie_samesite = Lax或Strict—— 缓解 CSRF 关联风险 -
session.save_handler = redis(推荐)或files+ 严格目录权限(chmod 700 /var/lib/php/sessions)
注意:session.use_cookies = 1 必须开启;禁用 cookie 而改用 URL 参数会直接放大劫持面。
最容易被忽略的一点:会话绑定不是“开了就行”
很多团队以为设置了 session.cookie_httponly 就算完成,但实际攻击者仍可通过中间人或 XSS 获取 cookie。真正有效的绑定需要在登录成功后主动校验并绑定上下文:
- 记录用户首次请求的
$_SERVER['HTTP_USER_AGENT']和部分$_SERVER['REMOTE_ADDR'](注意 NAT 场景下后者不可靠) - 将这些值 hash 后存入 session,并在每次敏感操作前比对
- 避免在 session 中直接存原始 UA 或 IP——防止信息泄露或被篡改
- 不要依赖
session_set_cookie_params()的 lifetime 参数代替服务端过期逻辑
PHP 运行时不会自动做这些。8.2.35 再安全,也替代不了这一步。


















