容器化 WordPress 的上传目录防护差异
TOPIC SOURCE
WordPress 上传目录防 PHP 执行:Nginx 与 PHP-FPM 的检查、整改和回滚清单
容器化 WordPress 的上传目录防护,关键差异不在于是否使用容器,而在于文件写入、请求转发和配置生效可能分属不同位置。只在某个容器内检查 wp-content/uploads,或只修改眼前看到的一份 Nginx 配置,都不足以证明上传目录中的脚本不会被执行。
首先要对齐两条路径:上传文件实际写入哪里,以及外部请求通过哪个 URL 到达这些文件。容器内路径、挂载后的文件位置和 Nginx 使用的访问路径可能并不相同;多站点、定制上传路径或符号链接还会增加偏差。盘点时应同时确认写入主体和 PHP-FPM 的处理入口,避免把“文件位于上传目录”误当成“请求一定受上传目录规则约束”。
防护规则应落在实际处理请求的 Nginx 配置中,并覆盖真实上传 URL 下会被转交给 PHP-FPM 的脚本请求。容器环境尤其要区分临时修改与受管配置:若配置由模板或部署流程生成,直接进入容器修改即使暂时生效,后续也可能被覆盖。规则还需与通用 PHP 处理规则核对匹配结果;阻止执行却让脚本以静态文件形式返回,同样不是合格的防护。
验证应分别检查正常媒体访问、后台上传,以及上传目录中测试脚本的请求结果。后者既不能出现执行输出,也不能暴露源码,还要结合 Web 与 PHP-FPM 日志确认请求没有进入解释器。变更前保留配置备份和恢复路径;若规则影响图片或插件功能,应先回滚并查明实际匹配路径,而不是直接放开整个上传目录的 PHP 处理。

参与讨论
这种配置被覆盖的问题真不少见