以下はhttp://www.php.net/manual/en/intro.pcntl.php
からの引用です。
プロセス コントロールは、Web サーバー環境内で有効にしないでください。予期しない結果が生じます Process Control 機能が Web サーバー環境内で使用されている場合に発生する可能性があります。
Web サーバーで有効にした場合の副作用は何ですか? そこにはどのような脅威とセキュリティ上の懸念がありますか?
助けてくれてどうもありがとう
以下はhttp://www.php.net/manual/en/intro.pcntl.php
からの引用です。
プロセス コントロールは、Web サーバー環境内で有効にしないでください。予期しない結果が生じます Process Control 機能が Web サーバー環境内で使用されている場合に発生する可能性があります。
Web サーバーで有効にした場合の副作用は何ですか? そこにはどのような脅威とセキュリティ上の懸念がありますか?
助けてくれてどうもありがとう
拡張機能を有効にすることと、機能を使用することには大きな違いがあります。拡張機能を有効にするだけでは、副作用はまったくありません。
一方で、利用可能になった機能は、いくつかのいたずらを許す可能性があります。 フォークは悪用される可能性があり、シグナルが他のプロセスに送信されて、そうしなければ望まないアクションを実行するように指示される可能性があり、Web サーバー デーモンと同じ所有者を持つ プロセスの優先度が変更される可能性があります。
つまり、共有ホスティング環境のように、そのマシンで実行されているすべての PHP を制御しない限り、有効にしたくないものです。
これを有効にすると、信頼されていない PHP コードの作成者がサーバーをfork-bombする可能性があり、これを防ぐのは思ったよりも困難です。
信頼されていない PHP コード作成者は、Web サーバー、または Web サーバーと同じユーザーとして実行されているプロセスを強制終了または一時停止する可能性があります。(Web サーバーが信頼できない PHP コードを root として実行している場合、サーバー上のすべてのプロセスを停止または一時停止できます。) または、FastCGI または同様のツールを使用している場合、同じユーザーとして実行されている他のタスクを強制終了または一時停止する可能性があります。
信頼されていない PHP コードの作成者が一連wait(2)
の関数を呼び出すと、サーバーまたは FastCGI インターフェイスがひどく混乱する可能性があります。サーバーによっては、ハングしたり、クラッシュしたりする可能性があります。
もちろん、PHP プロセス コントロール フラグは単なる助言にすぎません。PHP インタープリターのバグにより、悪意のあるコードの作成者がこれらすべてを許してしまう可能性があります。この設定は、正直なプログラマーを正直に保つためのものです。
実行するコードmod_php
(または他のサーバーの同様のテクノロジ) は、Web サーバーが実行できるすべての機能に完全にアクセスできます。
FastCGI (または同様のテクノロジ) で実行するすべてのコードは、オペレーティング システムのアクセス制御に基づいて、FastCGI システムが実行できるすべてのものに完全にアクセスできます。
信頼されていない PHP コードができることを本当に制限したい場合は、AppArmor、TOMOYO、SELinux、またはSMACKなど、さまざまな強制アクセス制御メカニズムを検討することをお勧めします。