首页 游戏 软件 资讯 排行榜 专题
首页
数据库
如何配置禁用所有危险的PHP函数 disable_functions最佳实践

如何配置禁用所有危险的PHP函数 disable_functions最佳实践

热心网友
40
转载
2026-04-27

disable_functions 配置:从语法细节到实战避坑指南

在PHP安全配置中,disable_functions 是一个关键防线,但配置不当,这道防线可能形同虚设。今天,我们就来深入聊聊其中的门道。

disable_functions 为什么不能只填函数名列表

很多朋友以为,在 php.ini 里简单写上 disable_functions = exec,system,passthru 就万事大吉了。但问题恰恰出在这里:PHP解析这个配置项时,会把整个字符串当作一个函数名去匹配。这意味着,任何多余的标点、空格甚至换行,都可能导致解析失败,最终一个函数都没禁掉。

结果呢?你可能会在 phpinfo() 里看到 disable_functions 的值为空,或者只有列表里的第一个函数生效了。更危险的是,你以为已经禁用了 shell_exec,攻击者却依然能在线上调用它。

  • 格式必须精确:必须使用无空格的英文逗号分隔。正确写法是 exec,system,passthru,而 exec, system, passthru(逗号后有空格)就是错误的。
  • 禁止换行:值中不能包含换行符,否则PHP会截断解析,后面的内容全部被忽略。
  • 大小写敏感:函数名必须小写,写 EXEC 是无效的。
  • 不支持通配符:这个列表不支持正则或通配符匹配,每个函数名都必须老老实实写全。

哪些函数真正该禁、哪些其实没必要动

禁用函数是个平衡的艺术。禁得太多,可能会“误伤”正常业务,导致Composer、Lara vel的文件锁或WordPress的更新机制瘫痪;禁得太少,又等于给攻击者留了后门。核心原则其实很明确:只瞄准那些能直接执行系统命令或任意读写文件的高危函数,其他风险相对较低的,完全可以交给 open_basedir 和严格的系统权限来控制。

那么,哪些是真正高危、应该优先列入黑名单的呢?通常是WebShell利用链上的常客:

  • 命令执行类execshell_execsystempassthru,这是最直接的威胁。
  • 进程控制类popenproc_open。它们比 exec 更隐蔽,能绕过一些简单的检测。
  • 常被忽略的pcntl_exec。这个函数容易被遗漏,但在某些环境下可以绕过部分 disable_functions 的检查。
  • 文件与网络操作curl_execfile_get_contents。它们本身无害,但一旦配合 php://filter 封装协议或SSRF漏洞,就能读取服务器上的敏感文件。

反过来,有些函数虽然名声在外,但实际没必要禁用,因为它们要么影响面太大,要么在新版本中风险已降低:

立即学习“PHP免费学习笔记(深入)”;

  • assert:在PHP 7.2及以上版本,动态代码执行功能已被默认禁用,且现代攻击更倾向于使用 eval
  • create_function:这个函数在PHP 8.0中已被废弃,禁用它没有实际的安全意义。
  • unserialize:危险的不是这个函数本身,而是反序列化不可信的数据。直接禁用会导致大量依赖它的业务功能崩溃,正确的做法是严格控制输入。

禁用后还要防绕过:proc_open 和 dl 的坑

以为禁了 exec 就高枕无忧了?攻击者的手段可不止这一种。他们可能会转而利用 proc_open 来启动新进程,或者在老版本PHP中,通过 dl 函数动态加载恶意扩展。

这不是危言耸听。像China Chopper、AntSword这类常见的WebShell,其攻击载荷默认就会优先尝试 proc_open,其次才是 exec

  • 务必加入proc_open:必须将 proc_open 加入禁用列表。它比 exec 更隐蔽,返回的是资源句柄,在日志里不那么显眼。
  • 关注dl函数dl 在PHP 8.0+已被移除,但如果你还在使用7.x版本,务必将其禁用。可以通过 php -m 命令检查是否包含 dl 模块。
  • 注意环境变量函数putenvini_set 本身不能直接执行命令,但它们可以配合其他漏洞修改环境变量或PHP配置(例如绕过 open_basedir 限制)。从安全加固的角度,建议一并禁用。

验证是否真生效:别只信 phpinfo()

配置写好了,怎么验证?千万别只看 phpinfo() 的输出。它显示的 disable_functions 值只是从 php.ini 读取的配置项,如果中间被 php_admin_value 指令或容器配置覆盖了,phpinfo() 反映的可能就不是运行时的真实情况。

最可靠的方法,永远是直接测试。可以写一小段代码来尝试调用:

echo @exec('id') ?: 'exec disabled';

但这里也有坑:有些函数被禁用后会触发 E_WARNING 错误,而像 proc_open 这类函数,禁用后只是安静地返回 false,不报任何错误,很容易让人误以为它还能用。

  • 双重验证:写一个最小化的测试脚本,对每个要禁用的函数,既用 function_exists('xxx') 检查,也尝试用 try...catch 块去调用它,观察实际行为。
  • 区分环境测试:务必在CLI(命令行)和FPM(FastCGI进程管理器)两种SAPI下分别测试。FPM的配置可能会在进程池(pool)中被覆盖(例如通过 php_admin_value[disable_functions])。
  • 确认重启生效:修改配置后,记得重启PHP服务,并用 ps aux | grep php 确认新的进程已经加载了最新配置,避免出现“改了文件却没生效”的尴尬。

最后要提醒的是,不同PHP版本对同一函数的禁用行为可能不一致。比如 pcntl_exec,在某些打了特定补丁的PHP 7.4版本里,仍然存在绕过可能。所以,千万别直接照抄网上的禁用列表,一定要根据你自己服务器上运行的PHP版本进行实测。安全配置,细节决定成败。

来源:https://www.php.cn/faq/2314640.html
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关攻略

Vidu制作人物采访特写镜头纪录片风格教程
AI资讯
Vidu制作人物采访特写镜头纪录片风格教程

想要在Vidu中生成具有呼吸感的纪录片式人物采访特写镜头,却常常遇到人物表情生硬、口型与语音不匹配、光线缺乏层次,整体画面失真实访谈的生动质感?这些问题的根源,往往在于提示词未能构建出充分的纪实语境,或者忽略了人物一致性、自然光影与微动作节奏等关键控制要素。掌握以下这套系统方法,将能有效引导AI精准

热心网友
05.27
三国计手游吕布培养攻略 技能强度解析与实战搭配指南
游戏攻略
三国计手游吕布培养攻略 技能强度解析与实战搭配指南

在热门策略手游《三国计》中,若论及物理爆发与战场统治力,无双品质武将吕布无疑是玩家公认的顶级输出核心。其傲视群雄的武力值与独特的技能机制,使他成为构建强势阵容的关键。然而,要真正发挥“战神”吕布的极限威力,而非让其沦为华而不实的摆设,就必须深入理解其属性优劣、技能联动与阵容搭配的精髓。 首先分析吕布

热心网友
05.27
2026年GEO优化公司技术效果合规三维度深度评测与选型指南
业界动态
2026年GEO优化公司技术效果合规三维度深度评测与选型指南

2026年,生成式引擎优化是企业获取AI搜索流量的关键。选择服务商需重点考察技术自研、效果量化与合规保障三大维度。具备自研技术、按效果付费并提供全球化合规服务的虎博科技等处于行业领先。企业应结合自身规模、行业与战略需求精准匹配,以在AI时代有效构建品牌认知并获取流量。

热心网友
05.27
2026年GEO优化服务商推荐:十大主流公司综合评测
业界动态
2026年GEO优化服务商推荐:十大主流公司综合评测

2026年,生成式引擎优化(GEO)成为企业数字营销关键。虎博科技以自研大模型、效果付费及标准化交付见长,适合中大型及出海企业;迈富时、百分点科技等亦具优势。选择服务商需关注技术自研深度、效果量化与合规安全,避免黑帽手段,保障长期稳定流量。

热心网友
05.27
三国龙起全球发售虚幻5新作青年演员重塑经典角色
业界动态
三国龙起全球发售虚幻5新作青年演员重塑经典角色

2026年5月27日,备受期待的国产大作《三国:龙起》正式在全球Steam平台同步发售。这款游戏定位独特,它是一款采用虚幻引擎5顶尖技术开发的三国题材真人互动影游,深度整合了电影化叙事与沉浸式游戏体验。自项目公布以来,其创新的“影游融合”模式便持续引发业界与玩家的广泛关注。随着游戏正式解锁,官方发布

热心网友
05.27

最新APP

宝宝过生日
宝宝过生日
应用辅助 04-07
台球世界
台球世界
体育竞技 04-07
解绳子
解绳子
休闲益智 04-07
骑兵冲突
骑兵冲突
棋牌策略 04-07
三国真龙传
三国真龙传
角色扮演 04-07

热门推荐

AI数据挖掘核心技术解析与实战应用指南
AI教程
AI数据挖掘核心技术解析与实战应用指南

AI数据挖掘能从海量数据中提炼关键洞察。其核心技术包括:聚类分析将相似数据自动分组以发现模式;分类算法基于历史数据预测新数据类别;关联规则学习揭示数据项间的共生关系;回归分析则量化变量间影响并预测数值趋势。掌握这些方法对决策至关重要。

热心网友
05.27
成都启用全国首个机器人配送社区外卖无需进楼
业界动态
成都启用全国首个机器人配送社区外卖无需进楼

外卖配送的“最后100米”难题,在成都一处青年公寓社区找到了创新解决方案。全国首个实现配送机器人常态化运营的住宅区,近日于成都正式落地。 社区内的配送任务由10台名为“享递Ultra”的机器人承担,它们来自成都高新区的一家科技企业。自今年1月启动试运行以来,这些机器人已累计完成近3万单配送任务,平均

热心网友
05.27
Stable Diffusion图片信息本地解析教程 保护隐私安全提取提示词
AI教程
Stable Diffusion图片信息本地解析教程 保护隐私安全提取提示词

Stable Diffusion 法术解析工具:本地读取AI绘画生成信息的专业解决方案 在利用Stable Diffusion进行AI绘画创作或学习时,你是否常常面临这样的难题:遇到一张效果出色的SD作品,却无法获知其生成所用的具体“咒语”(Prompt)、模型参数等关键信息?同时,出于对作品版权和

热心网友
05.27
极限竞速地平线6正式发售 获2026年最高游戏评分
游戏资讯
极限竞速地平线6正式发售 获2026年最高游戏评分

赛车游戏爱好者们,重磅喜讯来袭!微软旗下王牌竞速系列最新力作《极限竞速:地平线6》现已全球正式发售,同步登陆PC与Xbox Series X|S平台,并首发即加入XGP游戏库。这款备受期待的开放世界赛车游戏,一经推出便交出了一份堪称完美的答卷。 权威游戏媒体IGN毫不吝啬地给出了满分评价,其评语写道

热心网友
05.27
MOCA币购买指南:安全买入流程与挂单卖出策略
web3.0
MOCA币购买指南:安全买入流程与挂单卖出策略

MocaNetwork作为新兴的Web3社交层项目,其代币MOCA的购买需要谨慎规划。本文梳理了从前期准备到买入、持有及卖出的完整流程,重点介绍了中心化交易所直接购买、通过跨链桥转移资产以及使用去中心化交易所挂单等几种主流方式,并分析了不同卖出策略的适用场景,旨在帮助参与者更稳健地操作。

热心网友
05.27