结论:不能指望安全插件单独兜底,PHP2Shell 这类攻击利用的是 PHP 解析链路本身,插件只能补一部分漏,根子还得靠环境加固。
① 先搞清楚攻击面:PHP2Shell 的核心是把恶意内容伪装成图片或附件上传,再借不安全的文件包含、伪协议或错误的 Nginx 解析配置让 PHP 去执行它。安全插件通常做的是特征匹配和请求拦截,对「合法上传 + 解析配置不当」这条链路往往覆盖不到。
② 环境层必须自己动手:上传目录禁止执行 PHP,Nginx 里对 uploads 路径加 location 直接 return 403 或只允许静态文件;关闭 allow_url_include,禁用 phar、expect 等高风险扩展;PHP 版本及时跟进补丁。
③ 插件要选对用法:只开「上传文件类型校验 + 危险函数拦截 + 日志审计」这类硬功能,别迷信一键防护。上传白名单按扩展名和 MIME 双校验,图片走二次重编码。
④ 最后做验证:拿一个改名成 .jpg 的 PHP 测试文件上传,访问看是否被解析,能执行就说明防线有洞。安全插件是补丁,不是保险箱。