CGI を使用することのよく知られた主な欠点は、Web サーバーのパフォーマンスが低いことです。しかし、CGI (主に C/C++) ベースのアプリケーションはどの程度安全なのでしょうか? C/C++ で構築された CGI アーキテクチャに重大なセキュリティ ホールはありますか?
CGI ベースの Web アプリ/Web サイトの実際の実装について知りたいです。私が知っているのは javaranch.com です。
C/C++ を含め、どこにでも見られる主要なセキュリティ ホールは、標準のオープン CGI ライブラリを使用せず、そのドキュメントを読まず、とにかく安全だと思っていることです。
セキュリティは常に多面的であり、常に不完全です。あらゆる種類のソフトウェア、つまり以前は安全だと考えられていた可能性のあるソフトウェアには、常に穴が発見されています。そして今では、たとえば 15 年前よりも多くのセキュリティのベスト プラクティスがあります。また、セキュリティを強化するために SELinux を使用しています。
もちろん、問題は、アプリに十分なセキュリティが確保されているかということです。合理的な努力によって、合理的なレベルのセキュリティが得られますか? もちろん、それが私が C/C++ を使用しない理由ですが、代わりに Perl を使用しています。Perl でメモリを上書きしないようにするのは、C++ で行うよりもはるかに少ない労力で済みます。これは、実際の作業を伴わないレベルのセキュリティです。
CGI は、他のどの WSAPI よりも安全ではありません。プログラムがコードで何をするかがすべてです。CGI が行うのは、環境変数の設定とプログラムへのハンドルだけです。
多くのサイトは CGI ベースです。ホスティングにある多くの PHP サイトは CGI モードで実行されます - mod_php は共有環境では使いにくい - suid はありません。
一般に、CGI として実行するとパフォーマンスが低下しますが、セキュリティの点では優れています。(mod_perl や mod_php のように) Web サーバーの内部にアクセスできないため、脆弱性を利用するのは困難です。cgi-bin を使用すると、非実行ファイルは表示されません (PHP プログラマーによくあるバグは、.inc のような拡張子のライブラリがあるため、このファイルを直接要求するとソースが表示されることです)。