Php-fpm docker 容器最终使网站显示网页上的所有 post 数据

Php-fpm docker container eventually makes web site show all post data on the web pages

我们最近将旧站点转换为带有单个 Nginx 容器和 Php-fpm 容器的 dockerized 版本。

我们有多种版本的 php,因此有一个用于 php5,另一个用于 php7。

一段时间后,我们注意到每次 post 编辑表单时,尤其是在 PHP7 中,post 变量的整个转储都会出现在网络浏览器的顶部下一页。

它会在几个小时后发生,如果您重新启动容器,它会在几个小时内再次正常。

这个问题似乎几乎可以肯定是由一些黑客机器人利用 PHP-FPM 容器中的漏洞引起的。

它更改了配置文件中的设置,导致了这个问题:

auto_prepend_file = php://input

您可以通过使用 docker-compose 文件将 PHP-FPM 容器锁定到本地计算机来解决它。

而不是:

Ports:
  - "9000:9000"

使用:

Ports:
  - "127.0.0.1:9000:9000"

将您的防火墙锁定到此端口似乎不够好 docker 已控制您的防火墙并将重新打开它在 docker 撰写文件中看到的端口。

ports 命令的第二个版本将只允许从 nginx 容器所在的本地计算机进行访问 运行。

其他更灵活的容器保护方式: https://serversforhackers.com/c/php-fpm-configuration-the-listen-directive

问题最初在 PHP 错误跟踪器中报告:https://bugs.php.net/bug.php?id=80385