CGI

更新日:

用語解説

(Common Gateway Interface)は、WebサーバがHTTP要求を外部プログラムへ渡し、その標準出力をHTTP応答として返すための標準インタフェースです。静的ファイルだけでなく動的な内容を生成できます。

■ 試験で押さえるポイント

  • WebサーバはREQUEST_METHOD、QUERY_STRING、CONTENT_TYPEなどのメタ変数を環境変数として渡し、POSTなどの本文をプログラムの標準入力へ渡します。

  • CGIプログラムはContent-Typeなどの応答ヘッダ、空行、本文を標準出力へ書き、Webサーバがクライアントへ返します。プログラム言語は特定されません。

  • 古典的CGIは要求ごとにプロセスを起動するため、高負荷では生成・終了のオーバヘッドが大きくなります。FastCGIなどはプロセスを常駐させて再利用します。

  • 利用者入力をシェル命令やSQLへ直接連結するとコマンドインジェクションやSQLインジェクションを招きます。入力検証、パラメータ化、最小権限が必要です。

■ 過去問での着眼点

Webサーバと外部プログラムの間の環境変数・標準入出力インタフェースとして選びます。CGIをプログラミング言語又はHTTPそのものとする説明は誤りです。

例: GET /search.cgi?q=dbでは、サーバがQUERY_STRING=q=dbを渡してプログラムを起動し、プログラムがContent-Type: text/htmlと検索結果本文を標準出力へ返します。

音声で聞く

同じ分野の用語