内容紹介
独力でCGIプログラミングを作るために必要な基礎知識が学べる!
手軽で高度なWebプログラミングの手段として広く利用されているCGIですが、Perlのようなプログラミング言語を習得するだけでは自在なプログラミングはできません。HTTPの仕組みやOSの標準入出力などについての理解も必要です。本書は、こうした基礎の部分からわかりやすく説明したCGIの解説書です。これからCGIを学びたい読者はもちろん、サンプルスクリプトを流用するだけのCGIから卒業したいユーザーにとっても最適な一冊です。
このような方におすすめ
・Perlを使ったCGIプログラミングができるようになりたい方
・なんとなくCGIを使っているが、基礎を習得してもっと活用したい方
目次
主要目次
第1章 Webを支える技術の詳細
第2章 PerlによるCGIプログラミング
第3章 CGIアプリケーションの作成
第4章 モジュールとコマンドライン
第5章 体験するCGIセキュリティ
詳細目次
はじめに
本書の構成と各章の内容
掲載したスクリプトについて
スクリプトの動作環境について
掲載スクリプトの利用規定
第1章 Webを支える技術
1.1 Webの仕組みとCGIの関係
1.1.1 Webの裏側の姿
1.1.2 Webのバックグラウンドで働く技術
TCP/IPネットワーク
HTTP(HyperText Transfer Protocol)
CGI(Common Gateway Interface)
サーバシステム
1.2 TCP/IPネットワークの基本
1.2.1 TCP/IPネットワークの構成
[コラム] OSI参照モデル
1.2.2 TCPとTCPポート
[コラム] UDP(User Datagram Protocol)
1.2.3 IPとIPアドレス
プライベートアドレス
コンピュータ名の解決
1.3 HTTPの概要
1.3.1 HTTPのリクエストとレスポンス
[コラム] URIとURL
複数のファイルのリクエストとレスポンス
HTTPがシンプルな理由
1.3.2 Webサーバへのリクエスト
リクエスト行
ヘッダ
メッセージボディ
1.3.3 Webサーバからのレスポンス
ステータス行
ヘッダ
メッセージボディ
1.3.4 レスポンスのContent-typeとブラウザの動作
1.3.5 リクエストとレスポンスの確認
1.3.6 サーバログとしてHTTPを見る
1.4 CGIの動作
1.4.1 CGIとは
[コラム]CGIの実行環境について
1.4.2 CGIの動作
1.4.3 CGIにおける拡張子
Apache HTTP Serverの拡張子の設定
Microsoft IISの拡張子の設定
[コラム]CGIプログラムとPerl
1.4.4 Apache HTTP ServerでのCGI利用
CGIを動かすための設定
CGIスクリプトの先頭行
CGI動作の確認
1.5 標準入出力
1.5.1 標準入出力の概念
1.5.2 プログラム間の入出力インターフェイス
1.6 アクセス権
1.6.1 アクセス権の考え方
1.6.2 アクセス権の設定
UNIXの場合
Windowsの場合
第2章 PerlによるCGIプログラミング
2.1 環境変数の活用(環境変数チェッカー)
[コラム]ヒアドキュメント
2.2 ファイルの操作(アクセスカウンタとログ)
2.2.1 Perlでファイルを扱う際の注意点
ファイルハンドル
変数展開と特殊文字の扱い
小さなファイルの読み書きには配列を使う
大きなファイルの読み書きは1行ずつ
2.3 標準入出力の活用(リモートコマンド)76
2.3.1 パイプとリダイレクト
2.4 フォームデータのデコード(フォームデータチェッカー)
2.4.1 マルチパート方式
2.4.2 URIエンコード形式
[コラム]URIエンコードをする理由
2.5 Content-Typeの操作(CGIファイル転送)
[コラム]主なContent-Typeの種類
2.6 HTTPクッキーを利用したスクリプト
2.7 簡単なアプリケーション(簡易チャット)
[コラム]Perlを使ってCGIスクリプトを書くときの注意点
第3章 CGIアプリケーションのプログラミング
3.1 簡易ツリー式の掲示板
3.1.1 仕様を決める(どんな掲示板にするのか)
3.1.2 処理の流れ決める(どんな処理になるか)
3.1.3 処理の詳細を決める(使う技法と仕組み)
3.1.4 Perlによるコーディングとデバッグ
骨格部分のプログラムコード化
初期化処理を追加(管理用パスワードの設定)
見出しページと新規投稿の表示を追加
投稿処理の追加
個別記事の内容と返信画面の表示を追加
管理機能の追加
3.1.5 動作確認のために
コマンドラインやシェルからスクリプトを実行する
Webサーバのエラーログを参照する
リマークでコードを無効にする
簡易ブレークポインタ
無限ループからの脱出
3.1.6 まとめ
3.2 ファイルアップダウンローダ
3.2.1 仕様を決める
3.2.2 処理の流れ決める
3.2.3 処理の詳細を決める
3.2.4 Perlによるコーディングとデバッグ
ファイルアップダウンローダの骨格部分と初期化処理
ログイン画面のディレクトリのリスト表示を追加
アップロード前の確認表示とアップロード処理を追加
ダウンロード処理を追加
[コラム]テキストとバイナリを区別するbinmode()
削除処理を追加
多重アクセスについて
3.2.5 まとめ
第4章 Perlのモジュールと外部プログラムの利用
4.1 ソケット通信とCGI
4.1.1 ソケットとは
4.1.2 ソケットによるクライアント側のHTTP通信
接続の確立
リクエストの送信
レスポンスの受信
接続の切断
4.1.3 HTMLファイルの取得
URIからの値の取り出しとリクエストの作成
接続の確立
リクエストの送信
応答待機とレスポンスの受信
接続の切断
4.1.4 ソケットを利用した簡易Webサーバ
4.2 メールゲートウェイ
4.2.1 コマンドラインからのメール送信
[コラム]BlatJのヘルプメッセージ
4.2.2 Perlからのメール送信
4.2.3 Windows版CGIメーラー
日本語の変換
本文と添付ファイルを一時ファイルへ保存
BlatJへのコマンド送出と応答の受け取り
送信データの扱い方
実行結果の受け取り
4.3 画像処理
4.3.1 GDモジュールについて
[コラム]GIF画像のライセンス
4.3.2 モジュールの組み込み作業
[コラム]PPMでモジュールがインストールできない場合
4.3.3 画像ベースのアクセスカウンタ
[コラム]GDモジュールで図形を描画する
4.3.4 日時計のスクリプト
4.3.5 バイナリ転送スクリプトを生成する
[コラム]モジュールやライブラリなどを使う場合の注意
第5章 体験するCGIセキュリティ
5.1 CGIの利便性と危険性
5.2 コマンドラインの不正使用
[注]この章のスクリプトを実行する際の注意
5.2.1 システム情報の取得
5.2.2 ユーザーの操作
5.2.3 アクセス権の重要性
5.3 HTMLフォーム処理の抜け穴
5.3.1 特定のページへ自動的に誘導
5.3.2 破壊目的のフォームデータ
5.3.3 HTMLフォーム処理の重要性
5.4 データ処理の危険性
[コラム]クロスサイトスクリプティングの例
参考文献
索引
続きを見る