共有ホスティング構成で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ディレクティブを指定されたリストにさらに制限できます。
ドキュメントからの引用:
このディレクティブがNoneに設定され、AllowOverrideがNoneに設定されている場合、.htaccessfilesは完全に無視されます。この場合、サーバーはファイルシステム内の.htaccessfilesを読み取ろうとさえしません。
例:
AllowOverrideなしAllowOverrideListRedirect RedirectMatch
上記の例では、RedirectディレクティブとRedirectMatchディレクティブのみが許可されています。他のすべては、内部サーバーエラーを引き起こします。
例:
AllowOverride AuthConfig AllowOverrideList CookieTracking CookieName
上記の例では、AllowOverrideはAuthConfigディレクティブグループへのアクセス許可を付与し、AllowOverrideListはFileInfoディレクティブグループからの2つのディレクティブへのアクセス許可を付与します。他のすべては、内部サーバーエラーを引き起こします。