Webアプリケーションは、HTTP(Hypertext Transfer Protocol)というプロトコル上で動作します。
プロトコルとは、規約であり約束事です。ブラウザと Webサーバーが、お互いに決まった約束事で通信するので問題なく Webアプリケーションが動作するようになります。
HTTP は平文(ひらぶん、人間が読めるテキスト形式)でデータのやり取りをします。ブラウザから Web サーバーへ処理を要求することをリクエスト、Web サーバーからブラウザへの応答をレスポンスと呼びます。
理解を深めるために、ブラウザと Web サーバー間のデータのやり取りを Fiddler というツールで見てみましょう。Fiddler の詳細については、以下の記事をご覧ください。
Fiddler を起動して、ブラウザでこのサイトのアドレスである https://www.websec-room.com/ にアクセスしてみましょう。すると、HTTP のリクエストとレスポンスの内容が表示されます。
リクエストメッセージヘッダーの内容は以下のようになっています(Cookie部分は編集)。
GET https://www.websec-room.com/ HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: ja-JP
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)
Accept-Encoding: gzip, deflate
Host: www.websec-room.com
DNT: 1
Connection: Keep-Alive
Cookie: XXXXX
1行目はリクエストラインと呼ばれ、以下の形式になっています。
メソッド リクエストURL プロトコルバージョン
HTTP のメソッドは Web サーバーに対する命令です。ここでは以下の2つを覚えておきましょう。
GET | Webサーバーのリソースを取得 |
POST | Webサーバーに処理を依頼 |
リクエスト URL は、Webサーバーのアドレスを指定します。Fiddler を経由しているので通常のアドレス形式になっていますが、本来であればここは / になります。
プロトコルバージョンは HTTP のバージョン1.1になっています。
6行目の Host はリクエストの送信先 Web サーバーになります。
今回は GET メソッドだったためメッセージボディがありませんが、POST メソッドの場合はヘッダーの最終行から1行空けて POST リクエストの内容がメッセージボディに指定されます。
レスポンスヘッダーは以下のようになります(ヘッダー部のみ)。
HTTP/1.1 200 OK
Date: Sat, 23 Feb 2013 04:01:17 GMT
Server: Apache
X-Frame-Options: DENY
X-Pingback: https://www.websec-room.com/xmlrpc.php
Connection: close
Content-Type: text/html; charset=UTF-8
Content-Length: 12087
1行目はステータスラインと呼ばれ以下の形式になっています。
プロトコルバージョン ステータスコード テキストフレーズ
ステータスコードは100の位で意味が分かれます。
1xx | 処理継続中 |
2xx | 正常終了 |
3xx | リダイレクト |
4xx | クライアントエラー |
5xx | サーバーエラー |
7行目の Content-Type は MIME(マイム) タイプという形式でリソースの種類と、文字コードを表しています。ここでは、HTML形式で文字コードが UTF-8 であることを示しています。
レスポンスヘッダーの最終行から1行空けてレスポンスボディが表示されます。ここでは HTML が表示されます。
- HTTP はリクエストとレスポンスがセットになる
- HTTP はテキスト形式で情報をやり取りする
参考
Webアプリケーションセキュリティに関する記事は、以下のページにまとまっています。ぜひご確認ください。
コメント