クライアントが PHP スクリプトをサーバー上の特定のディレクトリにアップロードできるオプションを提供する Web サイトを開発しています。システムが安全であることを確認したいので、人々がこれらの PHP スクリプトを使用して、アップロード先のディレクトリ以外のファイルを編集または表示できるようにしたくありません。つまり、 にファイルがある場合、そのファイルは 内のファイルpublic_html/directory1/foo.php
のみを編集および表示できるpublic_html/directory1
必要があり、システム上の他の場所でファイルを編集または表示できないようにする必要があります。これを行う方法はありますか?
2 に答える
これは超危険です。Apache
技術的には、linux/windows のユーザーとグループの構成、構成、および構成に関する知識があれば、これを行う方法がありPHP
ます。非常に限定的な権限を持つユーザーの下で実行Apache
し、特定の種類のコマンドを禁止するように PHP を構成する必要があります (最も顕著なのはexec
/system
コマンドですが、他にも問題を引き起こす可能性のあるコマンドはたくさんあります)。
サーバーによってPHPとして評価されるフォルダーにファイルをアップロードする権利をユーザーに与えないようにする方法を見つけることを強くお勧めします。うまくいかないことが多すぎて、見落とされがちな設定が多すぎます。
このルートに進むことにした場合は、安全な PHP 構成とApache Privilege Separationについてよく読んでください。
PHP はサーバー側のスクリプトなので、システムを適切に保護するのは難しいと思います。そうは言っても、他のディレクトリにアクセスできないユーザーがApacheサーバーを実行することで、これらのファイルを制限できます。詳細については、 SElinuxを確認してください。これを行うのは非常に難しいことに注意してください。後でシステムをハッキングするために使用できるファイルを 1 つでも忘れる可能性があります。
誰かが VM をハイジャックした場合でも、いつでも VM をシャットダウンしてデータを復元できるように、これらのサーバーを VM 上で実行することをお勧めします。