私は大学のシステム管理者と仕事をしていて、たぶんよくあることを偶然見つけましたが、私にはかなりショックでした。
すべてのpublic_htmlディレクトリーとWeb領域は、Webサーバーの読み取り許可とともにafsに保管されます。ユーザーは、public_htmlにphpスクリプトを含めることが許可されているため、php内(およびメインのWebファイル!)から他のユーザーのファイルにアクセスできます。
これにより、.htaccessパスワード保護が完全に役に立たなくなるだけでなく、ユーザーがmysqlデータベースのパスワードと同様の機密情報を含むphpソースファイルを読み取ることができるようになります。または、他のユーザーがWebサーバーに書き込みアクセス権を持っているディレクトリを見つけた場合(たとえば、個人ログまたは送信されたフォームデータを保存するため)、それらのアカウントにファイルを保存できます。
簡単な例:
<?
header("Content-type: text/plain");
print file_get_contents("/afs/example.com/home/smith/public_html/.htpasswd");
?>
これは一般的な問題ですか?そして、通常はどのようにそれを解決しますか?
更新:
入力いただきありがとうございます。残念ながら、簡単な答えはないようです。このような大規模な共有環境では、ユーザーはおそらくこれほど多くの選択肢を与えられるべきではありません。私が考えることができる最良のアプローチは、すべての「public_html」ディレクトリのメイン構成で「open_basedir」を設定し、suphpを実行して、クリーンなphpのみを許可することです(cgiスクリプトなし、バッククォート付きの外部コマンドの実行など)。
ただし、このようにポリシーを変更すると、多くの問題が発生し、ユーザーがピッチフォークをつかんで追いかけるようになる可能性があります。設定を変更する方法について決定した場合は、同僚と話し合い、ここで更新します。
open_basedir
以下のソリューションを運用共有ホスティングシステムで使用しましたが、全員を独自の仮想ホストに分割しました-単一のディレクトリで機能するかどうかは不明です