当前位置:首页 >  站长 >  建站经验 >  正文

disable_functions:把PHP危险函数关进笼子

 2026-08-27 15:16  来源: 互联网   我来投稿 撤稿纠错

  一键部署OpenClaw

服务器被传了WebShell,攻击者在里面一句system('whoami')就拿到执行权限。事后清马属于亡羊补牢,事前把危险函数直接禁掉才是断根。PHP的disable_functions就是干这个的。

; php.ini
[.....]
disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source

这份清单覆盖了命令执行和任意文件读取的主要入口。注意eval不是函数、禁不掉,所以才有之前讲过的后门排查;assert、preg_replace的e修饰符这些老洞属于代码审计范畴,靠函数禁用兜不住。

禁用前先评估影响:你的业务代码有没有真的在用这些函数?grep一遍项目目录心里就有数。压缩图片、调外部命令的脚本撞上了禁用名单会直接报错,这类需求单独开一个只有内网能访问的PHP池,主站保持最严格配置。

# 检查项目里用没用危险函数

grep -rn "shell_exec\|passthru\|proc_open\|popen" ./ --include="*.php" | grep -v vendor/

改完重启php-fpm,写个phpinfo或用ini_get('disable_functions')确认生效。攻击者拿到上传点却什么命令都执行不了,横幅会变成勒索软件的变成了只能干瞪眼——这就是纵深防御里最实惠的一层。

申请创业报道,分享创业好点子。点击此处,共同探讨创业新机遇!

相关文章

  • Composer卡成PPT:一行命令切换国内镜像源

    装个依赖等十分钟,最后还Timeout。packagist主源在国外,高峰期慢是常态,但Composer允许全局换镜像,国内几个公共镜像速度拉满。一行命令的事。#阿里云镜像composerconfig-grepos.packagistcomposerhttps://mirrors.aliyun.co

  • PHP session劫持离你不远:四个配置项今晚就查

    拿到用户的sessionid就等于拿到登录态,劫持者不需要密码。sessionid主要从cookie里来,而cookie默认配置相当裸奔:脚本可读、明文传输、无严格归属校验。四个ini配置补齐这些洞。;php.inisession.cookie_httponly=1;JS读不到cookie,防XSS

  • 还在用MD5存密码?password_hash五行代码完成升级

    翻出十年前的老系统,用户表里密码列全是32位MD5。MD5快,快到GPU每秒能算几十亿次,意味着拖库之后密码等于明文。这课补起来不贵,PHP自带的password_hash就是标准答案。它默认用bcrypt,自动生成盐、自动处理算法版本,验证时password_verify连计时攻击都防了。用法五行

  • PHP OPcache 调优:老服务器不换硬件多扛一倍请求

    PHP每次执行脚本都要先把源码编译成字节码,这步是纯浪费——代码又没变,凭什么每个请求都重新编译一遍。OPcache把编译结果放进共享内存,第二次起直接拿来执行。这个扩展默认装了但常常没调好,等于揣着金饭碗要饭。;php.ini中调整opcache.enable=1opcache.memory_co

    标签:
    服务器
    php教程
  • PHP8的数据类型转换-PHP8知识详解

    什么是数据类型转换?答:数据从一个类型转换成另外一个类型,就是数据类型转换。在PHP8中,变量的类型就是由赋值决定的,也就是说,如果string赋值给$var,然后$var的类型就是string。之后将int值赋值给$var,它将是int类型。列如:在上面的代码中的“=”不是数学里面的“等于”,它是

    标签:
    php教程

热门排行

信息推荐