我在共享主机配置中使用 PHP-FPM。每个 FPM 池作为不同的用户运行。Apache 作为 www-data 运行。Apache 使用 mod_proxy_fcgi 通过套接字连接。我允许用户使用 .htaccess 文件。
如何防止用户连接到错误的 FPM 池?
虚拟主机看起来像这样:
<VirtualHost *:80>
ServerName foo.com
DocumentRoot /var/www/sites/foo.com/html
<FilesMatch "\.php$">
SetHandler "proxy:unix:/var/run/foo-com-fpm.sock|fcgi://localhost"
</FilesMatch>
</VirtualHost>
但是,foo-com 用户可以轻松地从他的 .htaccess 中覆盖该处理程序:
<FilesMatch "\.php$">
SetHandler "proxy:unix:/var/run/bar-com-fpm.sock|fcgi://localhost"
</FilesMatch>
这将允许他以不同的用户身份运行 PHP 脚本。在不禁止 FileInfo 覆盖的情况下,如何防止这种情况发生?
AllowOverrideList
允许进一步限制 .htaccess 指令到指定的列表。从文档中引用: