ホームページ  >  記事  >  php教程  >  PHP は、各仮想サイトが独立して実行できるように open_basedir を構成します

PHP は、各仮想サイトが独立して実行できるように open_basedir を構成します

WBOY
WBOYオリジナル
2016-06-13 12:20:311049ブラウズ

当時、これは IIS に比べて非常に悪いと感じました。IIS では、各サイトで使用するアカウントが異なる限り、サイトやディレクトリにアクセスするときに使用する匿名アカウントを設定できるからです。 、サイト間のセキュリティは相互に影響しません。私の最初の考えが間違っていたことに気づいたのはここ数日です。Apache では、特定のユーザーとしてサイトを実行する方法を詳細に制御することはできませんが、PHP を設定して各サイトを独立して動作させることもできます。少なくとも、サーバー全体がダウンしている状況では、再度実行することはできません。

この制御は、PHP の open_basedir を構成することで実現できます。この構成は IIS でも役立ちますが、ここでは Apache での構成についてのみ説明します。

open_basedir は、ファイルにアクセスするユーザーのアクティビティ範囲を指定された領域 (通常はホーム ディレクトリのパス) に制限できます。
記号 "." を使用して現在のディレクトリを表すことができます。 open_basedir は、Windows ではセミコロンを使用してディレクトリを区切り、他のシステムでは
コロンを使用して、複数のディレクトリを同時に設定することもできます。 Apache モジュールで動作する場合、親ディレクトリの open_basedir パスが自動的に継承されます。以下では、例として Linux システムでの設定を示します。

方法 1: php.ini で設定する
open_basedir = .:/tmp/

方法 2: Apache の VirtualHost で設定する設定
php_admin_value open_basedir .:/tmp/

方法 3: Apache 設定のディレクトリに
php_admin_value open_basedir .:/tmp/ を設定します。

3 つの設定方法の説明。 :
a. メソッド 2 はメソッド 1 よりも優先度が高く、メソッド 2 はメソッド 2 よりも優先度が高く、メソッド 3 はメソッド 2 をオーバーライドします。 「/tmp/」が設定ディレクトリに追加されるのは、PHP のデフォルトの一時ファイル (アップロードされたファイル、セッションなど) がこのディレクトリに配置されるためです。そのため、通常はこのディレクトリを追加する必要があります。そうしないと、一部の機能が追加されません。
c、設定ディレクトリに追加される「.」は、php ファイルが実行される現在のディレクトリを指します。これにより、サイトでファイルを 1 つずつ設定する必要がなくなります。サイト ディレクトリの外にある場合は、対応する VirtualHost ディレクトリに個別に設定する必要があります。

設定が完了したら、操作する PHP Web ホース (phpspy など) を忘れずに見つけて、存在するかどうかをテストしてください。他に問題がないとしても、権限は十分に制御される必要があります。
PHP セキュリティ構成の経験がある場合は、それを共有してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。