非 php.net · 非 NVD · 非 CISA

PHP 漏洞追踪

关于 PHP 安全漏洞的非官方简报

English简体中文日本語DeutschFrançaisNederlandsEspañol

安全警报

PHP2Shell:请升级 PHP。这是唯一完整的修复。

CVE-2026-109618 与 CVE-2026-109619 是 PHP 本体中的严重漏洞,未经身份验证即可远程执行代码。PHP 项目已于 2026 年 10 月 21 日为仍受支持的 8.2 至 8.5 分支发布修复。升级后必须重启 PHP。防火墙不能替代升级。

修复步骤

PHP 安全科普 · 防御向

PHP 文件包含(LFI/RFI):是什么,怎么修

include 和 require 会执行传给它们的任何文件。如果路径的一部分来自请求,那就是访客在决定运行什么。

最近更新

这是什么

本地文件包含(LFI)让请求把 include 或 require 指向服务器上已有的文件,比如配置文件或日志;配合上传或日志写入,可能变成代码执行。远程文件包含(RFI)会从别的服务器加载代码,只有在开启 allow_url_include 时才有效,php.net 文档说明它默认关闭。MITRE 把它归为 CWE-98。

怎么发现

怎么修

只读检查与安全写法

# Find include/require with a variable path (read-only)
grep -rnE "(include|require)(_once)?\s*\(?\s*\$" --include=*.php . | grep -v /vendor/
php -i | grep -E "allow_url_include|allow_url_fopen|open_basedir"

; php.ini hardening
allow_url_include = Off
open_basedir = /var/www/example:/tmp

// Map user choices to fixed files instead of building paths
$pages = ['home' => 'home.php', 'about' => 'about.php'];
require __DIR__ . '/pages/' . ($pages[$_GET['p'] ?? 'home'] ?? 'home.php');

用 basename() 处理后 include 就安全了吗?

它去掉了目录部分,但访客仍能选择该目录里的任意文件。明确的白名单更安全。

现代 PHP 里 RFI 还有风险吗?

只有在开启 allow_url_include 时才有。LFI 不需要特殊设置,所以仍然常见。

其他常见 PHP 漏洞类型

来源

出站链接将离开本站。本站不托管利用代码。

  1. CWE-98: PHP Remote File Inclusion — MITRE CWE
  2. Testing for Local File Inclusion — OWASP Web Security Testing Guide
  3. Filesystem runtime configuration (allow_url_fopen, allow_url_include) — PHP Manual
  4. Core php.ini directives (open_basedir, expose_php) — PHP Manual