ホームページ  >  記事  >  バックエンド開発  >  PHP は、各仮想サイトが独立して実行できるように open_basedir を構成します_PHP チュートリアル

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

WBOY
WBOYオリジナル
2016-07-21 15:42:59931ブラウズ

当時、これは 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 がメソッド 1 をオーバーライドすることを意味します。 ; 方法 3 は方法 2 よりも優先されます。つまり、方法 3 が方法 2 をオーバーライドします。 b. PHP のデフォルトの一時ファイル (アップロードされたファイル、セッションなど) が設定ディレクトリに追加されます。 ) はこのディレクトリに配置されるため、通常はこのディレクトリを追加する必要があります。そうしないと、一部の機能が使用できなくなります。
c. 設定ディレクトリに追加される「.」は、php ファイルが実行されている現在のディレクトリを指します。各サイトを 1 つずつ設定する必要がなくなります。
d. サイトがサイト ディレクトリ外のファイルも使用している場合は、対応する VirtualHost でディレクトリを個別に設定する必要があります。

セットアップが完了したら、PHP ネットワーク ホースを忘れずに見つけてください。 (phpspy など) を試して、問題があるかどうかをテストします。当然のことながら、アクセス許可は十分に制御される必要があります。
PHP セキュリティ構成の経験がある場合は、それを共有してください。



http://www.bkjia.com/PHPjc/320852.html

www.bkjia.com

http://www.bkjia.com/PHPjc/320852.html技術記事当時、これは IIS に比べて本当に悪いと感じました。IIS では、各サイトが使用している限り、セキュリティでサイトやディレクトリにアクセスするときに使用する匿名アカウントを設定できるからです...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。