- 静的なページ/動的なページの区別
- 通常HTTPサーバは,静的なページと動的なページの両方を管理して,HTTPクライアントからの要求を受け付けています.ではHTTPクライアントからの要求が,静的なページであるのか,動的なページであるのか,どうやって区別しているのでしょうか.
ほとんどのHTTPサーバは次のような方法で区別しています.
(1) 拡張子による方法
HTTPクライアントから要求があったパス名で,.cgiのものを動的なページ,それ以外のものを静的なページと見なします.
(2) パス名による方法
HTTPクライアントから要求があったパス名が,/cgi/や/cgi-bin/で始まる場合は動的なページ,それ以外を静的なページと見みなします.
HTTPサーバの設定では,(2)による方法が多いようです.ですから,.cgiで終わるファイル名であってもサーバ管理者が指定したディレクトリ以下に置いていないと,動的なページへの要求とは見なされず,外部ソフトウェアが動作しないという症状が発生します.
- 動的なページとセキュリティ
- WWWシステムは,利用頻度も高く,全世界に対して公開されますので,セキュリティに対して気を使わざるを得ません.不正アクセスを招くようなソフトウェアの設計や設定の欠陥をセキュリティホールと呼びます.動的なページに関しては,特にセキュリティホールを作りやすいので,注意が必要です.
どのようにしてセキュリティホールができてしまうのでしょうか.動的なページを生成する外部ソフトウェアは,いわゆる「ソフトウェア」ですから,そのソフトウェアを作っているプログラミング言語の範囲で何でもできてしまいます.
例えば,図7のように,ユーザーが入力したコマンドを実行して,その結果を返す外部ソフトウェアをHTTPサーバから起動できるようにしてしまったとしましょう.Webブラウザから,ファイルを削除するコマンドを入力したとします.すると,HTTPサーバから,CGIを経由して,外部ソフトウェアにファイル削除コマンドが伝えられ,外部ソフトウェアが,ファイル削除コマンドを実行します.すると,HTTPサーバが動いているコンピュータ上のファイルが削除できてしまうのです.まったく同じ原理で,HTTPファイルを書き換えたり,パスワードファイルを読み出したりすることができるのです.
最近,官公庁や企業のWebページが不正に書き換えられる事件が頻発していますが,基本的にはこのような方法によって,書き換えが行われています.
以前,フリーなHTTPサーバであるApacheに試験用の外部ソフトウェアが付属しており,このソフトウェアが例であげたような不正を行うことができたために,書き換えが頻発したということがありました.
では,このようなセキュリティホールを作らないためには,どのようにしたらよいのでしょうか.まずは例であげたような危険なことができてしまう外部ソフトウェアを,HTTPサーバから起動できないようにすることです.
実はこのような危険なコマンドを外部から実行できてしまうというセキュリティホールは,動的なページを生成する外部ソフトウェアだけではなく,HTTPサーバやオペレーティングシステムのバグによっても起こっています.ですから,常にHTTPサーバやオペレーティングシステムのバグ情報,セキュリティ情報を監視して,バグが修正された最新のソフトウェアを使うことも重要となります.
〔図7〕セキュリティホールを作ってしまう外部ソフトウェアの例
- ◆
まとめ ◆
- 今回は,動的なWebページを実現するCGIのしくみについて解説しました.
- Webページには,静的なページと動的なページがある
- 動的なページは,HTTPサーバの外部にあるソフトウェアによって作られる
- 静的なページのファイル形式を示すヘッダ情報は,ほとんどの場合,拡張子から生成される
- 動的なページのHTTPヘッダは,外部ソフトウェアが生成する
- HTTPクライアントから外部ソフトウェアへの入力情報は,GETコマンドのURLに格納され渡される
- 動的なページを生成する外部ソフトウェアは,セキュリティホールを作りやすい
* * * *
次回は,CGI経由で動的なページを生成する外部ソフトウェアに焦点をしぼって,そのしくみやソフトウェアを実際に動かすにあたっての注意点などを解説する予定です.
|