CGI

提供:Wiki@KDS
ナビゲーションに移動 検索に移動

Common Gateway Interface (CGI)は、ウェブサーバ上でプログラムを動作させるための仕組み。現存する多くのウェブサーバプログラムはCGIの機能をサポートしている。

ウェブサーバプログラムの機能の主体は、あらかじめ用意された情報を利用者(クライアント)の要求に応じて送り返すことである。そのためサーバプログラム単体では情報をその場で動的に生成してクライアントに送信するような仕組みを作るのは難しい。そこで、サーバプログラムから他のプログラムを呼び出し、その処理結果をクライアントに送信することでそれを可能にする。その際の、サーバプログラムと外部プログラムとの連携法の取り決めがCGIである。

典型的には電子掲示板やアクセスカウンタ、WikiやBlogシステムを作る目的でCGIを用いる。これらはいずれも利用者の書き込みやアクセスによって表示内容が変わっていく動的なものであるため、CGIなどが必要なのである(ただし、CGI以外の技術で作ることも可能である)。

PHP・JSP・ASPなどは、HTML中に埋めこむ形でプログラムを組む点がCGIと異なるが、基本的には同類の技術である。

CGIプログラムは基本的にどのようなプログラミング言語]等で記述してもよいが、PerlやC言語が使われることが多い。なおC言語によるCGIは脆弱性やメモリリークの原因となることがあるので、多くの個人ウェブサイト用レンタルサーバーでは使用できないことが多い。レンタルサーバーの宣伝文句に「CGI利用可能」とあれば、暗黙的にPerlによるCGIを指している事が多い。「CGIサンプル集」といった書籍でも暗黙的にPerlのコードであり(近年この状況は後発のスクリプト言語の台頭によって変わりつつある)、これらによってCGI=Perlのことだというふうな誤解をしている人もいる。

CGIで入力されたデータを扱う際のチェック不備によってクロスサイトスクリプティング(XSS)が発生することもあり、企業のサイトでの情報漏洩など、社会問題になっている。