在无法升级 php 版本的情况下,缓解漏洞的核心思路是切断攻击面并限制执行权限。最直接的做法是在 .htaccess 中禁用危险函数,并通过配置关闭远程文件包含和代码执行功能。同时,确保上传目录不可执行脚本,从源头上阻止恶意代码的运行。

如何禁用高危函数以阻止命令执行
通过修改 php.ini 或 .htaccess 中的 disable_functions 指令,可以禁止 system、exec、shell_exec 等系统级函数的调用。这能有效防止攻击者利用已知漏洞执行服务器命令。需要注意的是,部分虚拟主机可能锁定此配置,此时需检查是否允许用户覆盖设置。

php_value disable_functions "system,exec,shell_exec,passthru,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source"
上述配置将关键危险函数列入黑名单。重启 Web 服务后,任何尝试调用这些函数的 PHP 脚本都将返回致命错误,从而阻断命令执行链。若虚拟主机不支持 php_value,则需在控制面板中寻找安全设置选项进行勾选。
如何关闭远程文件包含与代码执行
关闭 allow_url_include 和 allow_url_fopen 是防御远程文件包含(RFI)的关键。许多旧版本 PHP 默认开启这些功能,导致攻击者可通过 include() 加载恶意远程脚本。禁用后,本地文件包含(LFI)虽仍可能存在,但无法直接引入外部代码,大幅降低风险。

php_flag allow_url_include Off php_flag allow_url_fopen Off
这两行配置强制 PHP 仅能访问本地文件系统。对于依赖远程资源的应用,需提前将内容下载到本地。结合 open_basedir 限制文件访问路径,可进一步缩小攻击者的操作空间,使其无法读取敏感配置文件。
上传目录为何必须禁止脚本执行
即使禁用了危险函数,若用户上传目录允许执行 PHP 脚本,攻击者仍可上传 Webshell 并直接运行。因此,必须在 Web 服务器层面配置上传目录(如 /uploads)禁止解析 PHP。在 Apache 中,可通过 .htaccess 添加 php_flag engine off 实现;在 Nginx 中,则需配置 location 规则拒绝 .php 请求。此举确保即使文件被上传,也无法作为代码执行,只能作为静态资源被下载或查看。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











