14

私はこの問題に遭遇しました.apacheとphpを実行しているサーバーがあります。多くの仮想ホストがありますが、潜在的に悪意のあるユーザーが自分の Web スペースを使用して (単純な php スクリプトを介して) 他のユーザーのファイルやシステム ファイルを閲覧できることに気付きました。これは php パーミッションが原因で発生する可能性があります。これを回避する方法は、php.ini で open_basedir 変数を設定することです。これは、単一のホスト システムでは非常に単純ですが、仮想ホストの場合、各ホストごとに basebir が存在します。

各ユーザー/ホストごとに dis basedir を設定するにはどうすればよいですか? リクエストされたphpファイルのphp権限をApacheに継承させる方法はありますか

EG /home/X_USER/index.php の所有者は X_USER です。apache がファイル index.php を読み取ると、そのパスと所有者がチェックされます。単純に、システムが php basedir 変数をそのパスに設定するのを探しているだけです。

よろしくお願いします

4

3 に答える 3

20

Apache ディレクティブopen_basedirを使用して、ディレクトリごとに設定することができます。php_admin_value

マニュアルの例:

<Directory /docroot>
  php_admin_value open_basedir /docroot 
</Directory>

あなたのコメントについて:はい、外部コマンドは影響を受けませんopen_basedir-これを呼び出す場合ls /、PHPが実行されるユーザーアカウント(多くの場合、名前が付けられwwwているか、類似している)の権限で実行されます。私の知る限り、open_basedir外部コマンドに拡張することはできません。

その場合、あなたが探している種類の保護は、通常の Apache/PHP セットアップでは実現できないと思います。近いかもしれない唯一のことは、chroot jail で Apache を実行することです。私はこれを自分でやったことがないので、それについては何も言えません。掘り下げて、それについて具体的に質問する必要があるかもしれません.

于 2010-05-06T12:52:35.027 に答える
1

Apache 構成ファイルを使用して、多くの php.ini 設定を設定できます。

PHP マニュアルの関連ページを参照してください: - http://php.net/manual/en/configuration.changes.php - http://www.php.net/manual/en/ini.core.php#ini. sect.path-directory - http://www.php.net/manual/en/configuration.changes.modes.php

于 2010-05-06T12:53:01.097 に答える
1

chroot は良い考えです。そして今、ドッカーはより効果的です。

「/docroot」を含むopen_basedirはセキュリティではありません。「/」で終わる必要があります。そうしないと、PHPが/docroot1にアクセスできます

于 2016-04-16T16:35:20.473 に答える