たとえばmod_php
、代わりに使用する方が安全php-cgi
ですか? それともmod_perl
、従来の の代わりに使用する方が安全cgi-scripts
ですか?
私は主にセキュリティの問題に関心がありますが、大きな違いがある場合は速度が問題になる可能性があります。
どういう意味でのセキュリティ?いずれにせよ、それは実際にどのスクリプトが実行されているか、そしてそれがどれだけうまく書かれているかに依存します. 最近はあまりにも多くのスクリプトが中途半端で、入力の検証を適切に行っていません。
個人的には、FastCGI プロセスが終了すると新しいプロセスが生成されるため、mod_php より FastCGI を好みますが、mod_php は Apache 全体を殺すのを見てきました。
セキュリティに関しては、FastCGI を使用すると、技術的にはデフォルトの Web サーバー ユーザーとは異なるユーザーで php プロセスを実行できます。
別の注意として、Apache の新しいワーカー スレッド サポートを使用している場合、一部の拡張機能はスレッド セーフではなく、競合状態が発生するため、mod_php を使用していないことを確認する必要があります。
独自のサーバーを実行する場合は、モジュールの方法を使用すると、多少高速になります。共有サーバーを使用している場合、通常は CGI 側で既に決定が行われています。この理由は、ファイルシステムのアクセス許可です。モジュールとしての PHP は、http サーバー (通常は「apache」) のアクセス許可で実行されます。スクリプトをそのユーザーに chmod できない限り、誰でも読み取り可能な 777 にスクリプトを chmod する必要があります。残念ながら、これは、サーバーの隣人がそれらを見ることができることを意味します-データベースアクセスパスワードを保存する場所を考えてください. ほとんどの共有サーバーは、スクリプト所有者の権限でスクリプトを実行する phpsuexec などを使用してこれを解決しているため、コードを 644 に chmod することができます (必要です)。 Phpsuexec は PHP を CGI としてのみ実行します。 、 それ'
ほとんどのセキュリティ ホールは、スクリプト自体のお粗末なプログラミングが原因で発生するため、CGI として実行したり、モジュールで実行したりすると、まったく意味がありません。そうは言っても、ApacheモジュールはWebサーバー全体をクラッシュさせる可能性があり(特にスレッド化されたMPMを使用している場合)、mod_phpはそれで有名です.
cgi は遅くなりますが、最近では主に FastCGI やその他の解決策があります。
あなたの脅威モデルは何ですか?
PHP 5.2.6 の PHP install.txt ドキュメントから:
サーバー モジュールは、CGI バイナリと比較して、大幅に優れたパフォーマンスと追加機能を提供します。
IIS/PWS の場合:
警告
CGI セットアップを使用すると、サーバーはいくつかの攻撃を受ける可能性があります。これらの攻撃から身を守る方法については、CGI セキュリティ セクションをお読みください。
mod_php や FastCGI などのモジュールは、プレーンな CGI よりも信じられないほど高速です.. CGI を実行しないでください。他の人が言ったように、PHP プログラム自体が最大のセキュリティ上の脅威ですが、共有ホストではもう 1 つの考慮事項があることを無視します。
スクリプトが他の php プログラムと共有されているホスト上にあり、ホストがセーフ モードで実行されていない場合、すべてのサーバー プロセスが同じユーザーとして実行されている可能性があります。これは、データベースのパスワードを含め、他のすべての php スクリプトが自分のスクリプトを読み取ることができることを意味する可能性があります。そのため、サーバーの構成を調査して、コードが他のユーザーに読み取られないようにしてください。
独自のホスティングを管理している場合でも、サーバー上の別のハッキングされた Web アプリケーションが他の Web アプリケーションへのパイプになる可能性があることに注意してください。
組み込みモジュールを使用すると、CGI を使用するよりも確実に高速になります。セキュリティへの影響は、構成によって異なります。デフォルトの設定ではそれらはほとんど同じですが、cgi は組み込みモジュールが提供できないより安全な設定を可能にします。特に共有ホスティングのコンテキストではそうです。正確に何から身を守りたいですか?