異なるドメインで複数のVirtualHostを実行しているApache Webサーバーで、PHP Webサイトが異なるドメインで実行されている場合、各VirtualHostにopen_basedirを設定することはどれほど重要ですか?
実際には異なるVHostを互いに分離するのに役立ちますか、それとも制限を回避することは可能ですか?
説明されている状況でopen_basedirを設定しないと、セキュリティ上の欠陥はどのくらい大きくなりますか?
ディレクトリトラバーサルの脆弱性が発生した場合の保護を強化します。たとえば、次のようなPHPファイルを考えてみます。
_readfile($_GET['thumbnail_path']);
_
_open_basedir
_がない場合、このページを使用してファイルシステム上の任意のファイルを読み取ることができます。 _open_basedir
_を設定すると、これが防止され、特定のディレクトリ内のファイルのみを読み取ることができます。
ただし、_open_basedir
_は、サーバーで(PHP)コードを実行できるユーザーから保護しません。たとえば、単にsystem('cat /etc/passwd')
を実行すると、basedir設定がバイパスされます。また、 ファイルを処理するすべての関数がopen_basedir設定に対してパスをチェックするわけではありません 。
open_basedirは基本的に、操作をユーザースペース、つまりファイルシステム内のディレクトリ、つまりホームディレクトリに制限します。必要に応じて、複数のディレクトリに設定できます。
open_basedirを設定すると、意図的または偶発的に、指定されたスペース以外の場所へのアクセス/変更を防止できます。
PHPスクリプトまたはユーザースペースの悪意のあるphpスクリプトに脆弱性がある場合、悪意のあるスクリプトによるディレクトリ/ディレクトリへのアクセスが制限されます。passwd、shadowなどのファイルをプルすることが困難になります。ファイルまたはその他の機密領域。