ホームページ >バックエンド開発 >PHPチュートリアル >PHP環境の強化(移行)_PHPチュートリアル
著者: Albert
PHP が Apache のモジュールとして実行される場合、Apache 自体のセキュリティが主導的な役割を果たします。そのため、正しく設定されていれば、PHP は非常に安全な環境になります。ただし、PHP が CGI モードで実行される場合は、安全な環境になります。それほど安全ではありません。
この記事で説明されている操作は、Unix と Windows の両方に適用できます。
1. Apacheモジュールとして実行する
一般的に言えば、Apacheは「nobody」または「www」として実行されるため、モジュールとしてのPHPは非常に安全です。
PHPが仮想ホスト環境にある場合、他のユーザーのファイルを閲覧できる危険性があります。簡単なスクリプトは次のとおりです。
// ドキュメントルートは /usr/local/websites/mydomain にあるとします
$location = ../ // 上のディレクトリに移動します
$parent = dir($location; );
// 現在のディレクトリを表示します: /usr/local/websites
while($entry = $parent->read()) {
echo $entry .
}
$parent->close() ;
?>
このように、$location が変更されている限り、ユーザーは仮想ホスト上の他のすべてのユーザーのファイルを参照できます。このような危険を軽減するには、php.ini を確認し、safe_mode、doc_root、usr_dir パラメータを変更して、ユーザーを自分の仮想ホスト環境に制限する必要があります:
safe_mode = On
doc_root = /usr/local/apache / htdocs
user_dir = /home/albertxu/htdocs
2. CGI として
PHP を CGI として実行する場合は、他人に知られたくない情報が漏洩する可能性があるため、十分に注意する必要があります。
最初に注意すべきことは、実行可能ファイルをドキュメントのルート ディレクトリ以外の場所に配置する必要があるということです。たとえば、/usr/local/bin なので、すべての CGI ファイルは次で始まる必要があります:
#!/usr/local/bin/php
ユーザーが CGI を直接呼び出すのを防ぐ方法は、Apache で CGI リダイレクトを強制することです:
Action php - script /cgi-bin/php.cgi
AddHandler php-script .php
これにより、次の URL
http://example.com/mywebdir/test.htm
が
http://example.com/ に変換されます。 cgi-bin/php/mywebdir/test.htm
CGI モードで PHP をコンパイルするときは、次のオプションを使用するのが最善です:
--enable-force-cgi-redirect
この記事では、PHP に関連するセキュリティ問題について詳しく説明します。セキュリティ情報については、PHP マニュアル http://www.php.net/manual/en/security.php のセキュリティに関する章を参照してください。