PHP のsafe_mode オプションの目的は、この章で説明する問題のいくつかを解決することです。ただし、PHP マニュアル (http://www.php.cn/) に記載されているように、この種の問題を PHP レベルで解決するのはアーキテクチャ的に正しくありません。
セーフ モードが有効な場合、PHP は実行中のスクリプトによって読み取られた (または操作された) ファイルの所有者をチェックして、それがスクリプトの所有者と同じであることを確認します。これはこの章の多くの例から保護しますが、他の言語で書かれたプログラムには影響しません。たとえば、Bash で書かれた CGI スクリプトは次のようになります。 Bash パーサーは、セーフ モードを有効にするために PHP 構成ファイル内の構成文字列を考慮またはチェックしますか?もちろん違います。同様に、Perl、Python など、サーバーでサポートされている他の言語もこれを気にしません。 この章のすべての例は、他のプログラミング言語にも簡単に適用できます。
もう 1 つの典型的な問題は、セーフ モードが WEB サーバーに属するファイルへのアクセスを拒否しないことです。これは、スクリプトを使用して別のスクリプトを作成でき、新しいスクリプトが WEB サーバーに属しているため、WEB サーバーに属するすべてのファイルにアクセスできるためです: 上記のスクリプトは次のファイルを作成します:
#!/bin/bash echo "Content-Type: text/plain" echo "" cat /home/victim/inc/db.inc
ファイルは Web サーバーによって作成されたため、その所有者は Web サーバーになります (Apache は通常、ユーザー none として実行されます): したがって、このスクリプトはセーフ モードによって提供されるセキュリティ対策の多くをバイパスする可能性があります。セーフ モードがオンになっている場合でも、/tmp ディレクトリに保存されているセッション情報などの一部の情報は、これらのファイルが Web サーバー (誰でもない) に属しているため、攻撃者によって表示される可能性があります。
PHP のセーフ モードは何らかの役割を果たしており、多層防御メカニズムと考えることができます。ただし、これでは不十分な保護しか提供されず、この章にはこれに代わる他のセキュリティ対策はありません。
上記は PHP セキュリティセーフ モードの内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) をご覧ください。