Next: 16.5 ファイルアップロード
Up: 16. フォーム
Previous: 16.3 ISINDEXの解析
16.4 CGIプログラムTips
- 危険なスクリプト
- 入力された内容をコマンドとして実行するようなCGIプログラムは非常に危険です。クラッカーによってパスワードファイルの盗難や重要なデータの消失などが行われる可能性があります。危険の芽となりそうなところはないか、十分にCGIプログラムを見直してください。
- パーミッション
- CGIプログラムを含め、ブラウザからのアクセス要求はWebサーバーが、特定の(Webサーバーで設定している)ユーザー/グループ権限で代理で行っています。UNIXのWebサーバーでは通常、ユーザー名nobody、グループ名nogroupに設定されています。各ファイルは少なくともこのユーザー/グループ権限で読めるようになっていなければなりません。CGIプログラムでファイルを書き込む場合には、書き込み権限も必要です。システム管理者でない限り、「nobody、nogroupのみファイルやディレクトリの読み込み/書き込みの権限がある」という状態にすることはできないため、通常は「誰でも書き込み」という状態にすることになるでしょう。ご推測のとおり、これはWebサーバー内を操作できるすべてのユーザーが書き込みをできることを意味し、危険を伴います。
- 自爆装置
- CGIプログラムの動作が遅いと、ユーザーはいらいらして送信を何度も行ったり、中断してしまったりすることがあります。タイミングが悪いと、CGIプログラムの動作が中途半端になったままWebサーバー上に残されてしまうことがあります。一定時間を経過しても処理が滞っているような場合には自分自身のプロセスを殺すよう設定しておいたほうがよいでしょう。
- 速度
- CGIプログラムはエンコーディング/デコーディングなどの負荷のかかる処理が発生します。これが速度に影響するようになると、ユーザーの不満も高くなってきます。たとえば入力値のエラーチェックなどは、JavaやJavaScriptなどを使うことにより、CGIプログラムへの送信前にチェックするとよいでしょう。また、Javaを使って完全に独立したサーバー/クライアントシステムを構築し、直接独自形式のプロトコルでやり取りするようにすれば非常に高速なユーザーインターフェイスになります。
Kenshi Muto
平成11年9月19日