基本情報技術者試験など情報処理技術者試験を受験する方にとっては必須の,WWWについてシンプルにまとめています。WWWとHTMLの説明からはじめ,HTTP(HTTPの概要,URI(URL、URN),HTTPリクエスト(GETメソッド,POSTメソッド,GETメソッドとPOSTメソッドの比較,主なヘッダーフィールド),HTTPレスポンス(主なステータスコード,主なヘッダーフィールド),セッション管理(Cookie,リンクのURLにセッションIDを埋め込む方法(URLリライティング),フォームのデータにセッションIDを埋め込む方法(hiddenを使用))),プロキシサーバー,Webのセキュリティ(ファイアウォールやWAFによるアクセス制御,URLフィルタリング,コンテンツフィルタリング,Webサイトでの認証(ベーシック認証,ダイジェスト認証,フォーム認証),HTTPヘッダーによるセキュリティ対策(secure属性),HTTPS(サーバー証明書(SSL証明書),サーバー認証,クライアント認証))について説明しています。覚えることが多いですが,一つ一つ丁寧に理解するよう努めましょう。
WWW(World Wide Web)
WWWとは,ハイパーテキストをインターネットで閲覧するためのシステムをいいます。
※ ハイパーテキスト…文書内の任意の位置に,他の文書へのリンクを埋め込むことができるテキスト。文字,画像,音声,動画などにリンクを設定できる
HTML(HyperText Markup Language)
HTMLとは,ハイパーテキストを記述する言語のことをいいます。
※ HTMLの詳細は,「」を参照
HTTP(HyperText Transfer Protocol)
HTTPとは,WebサーバーからHTMLで記述されたWebページや,その他のファイルなどを取得するためのプロトコルをいいます。
※ TCPのポート番号80を使用する
※ 実際には,URLに対応するIPアドレスを取得(名前解決)してから,Webサーバーに接続する。名前解決の詳細は,「DNS-名前解決の問い合わせ方法 -情報処理シンプルまとめ」を参照
HTTPは,HTTPリクエストとHTTPレスポンスで処理を完結するステートレスなプロトコルです。そのため,状態管理は行いません。
※ ステートレス…状態管理を行わない(以前の状態を保持しない)こと
URL(Uniform Resource Locator)
URLとは,インターネット上に存在する資源(ファイルなど)の位置を表記する方法です。
URI(Uniform Resource Identifier)
URIとは,インターネット上に存在する資源(ファイルなど)を識別するための識別子を表記する方法です。URN(インターネット上に存在する資源(ファイルなど)を識別するための名前を表記する方法)が追加された際に,定義されました。
※ URIは,URLを拡張する形で定義された
HTTPリクエスト
メソッドの種類
HTTPリクエストのメソッドには,次のようなものがあります。
GET | URLで指定したサーバーから情報を取得する |
HEAD | URLで指定したサーバーから情報のヘッダーだけを取得する |
POST | URLで指定したサーバーに情報を送信する |
PUT | URLで指定したサーバーのファイルを,送信するデータに置き換える |
DELETE | URLで指定したサーバーのファイルを削除する |
OPTIONS | 利用可能なオプション(メソッド)の一覧を取得する |
※ 主に,GETメソッドとPOSTメソッドが使用される
GETメソッド
GETメソッドは,URLで指定したサーバーから情報を取得する際に使用するメソッドです。たとえば,GETメソッドによるHTTPリクエストは,次のようになります。
また,GETメソッドによるHTTPリクエストで,データを送信する場合は,次のようにします。
POSTメソッド
POSTメソッドは,URLで指定したサーバーに情報を送信する際に使用するメソッドです。たとえば,POSTメソッドによるHTTPリクエストは,次のようになります(データを送信する場合は,送信するデータをメッセージボディに格納します)。
GETメソッドとPOSTメソッドの比較
GETメソッド | POSTメソッド | |
---|---|---|
送信データの格納場所 | URLの後ろ | メッセージボディ |
送信データの長さの制限 | 制限あり | 制限なし |
送信できるデータの種類 | 文字列のみ | 文字列,数値,バイナリなど |
セキュリティ | 低い(送信データがURLに表示され,Webブラウザの閲覧履歴に残る) | 高い(送信データがURLに表示されず,Webブラウザの閲覧履歴にも残らない) |
HTTPリクエストで使われる主なヘッダーフィールド
Accept | 受入可能なメディアタイプ |
Accept-Charset | 受入可能な文字セット |
Accept-Encoding | 受入可能なエンコーディング |
Accept-Language | 受入可能な言語 |
Authorization | 認証情報(ユーザーIDやパスワードなど) |
Cookie | Cookie情報 |
From | メールアドレス |
Host | ホスト名 |
Referer | 参照元(直前に閲覧)のURI |
User-Agent | ユーザーのシステムやブラウザに関する情報(プログラムの名称やバージョン) |
※ Cookie(クッキー)の詳細は後述
HTTPレスポンス
たとえば,HTTPレスポンスは,次のようになります。
ステータス行にはHTTPリクエストの結果が,ヘッダーフィールドには補足情報が,メッセージボディにはリクエストしたファイルなどの内容が収められています。
主なステータスコード
200 | OK | HTTPリクエスト成功 |
401 | Unauthorized | 利用者認証が必要 |
404 | Not Found | 見つからない |
408 | Request Timeout | HTTPリクエスト時間切れ |
500 | Internal Server Error | 内部サーバーエラー |
HTTPレスポンスで使われる主なヘッダーフィールド
Content-Encoding | コンテンツのエンコーディング |
Content-Language | コンテンツの言語 |
Content-Length | コンテンツのサイズ |
Content-Type | コンテンツのメディアタイプ |
Date | 生成した日時 |
Location | URI以外にリダイレクト |
Set-Cookie | クライアントに保存するCookieに関する情報 |
※ Cookie(クッキー)の詳細は後述
セッション管理
セッション管理とは,(電子商取引などの)処理に必要な通信の一連のやり取り(セッション)を管理することをいいます。HTTPは,ステートレスなプロトコルであり,それぞれの通信は独立しているため,セッション管理をすることはできません。よって,セッション管理が必要な場合は,クッキーなどを使用して管理します。
※ ステートレス…状態管理を行わない(以前の状態を保持しない)こと
Cookie(クッキー)
クッキーとは,Webサーバーがユーザーを識別するために参照するファイルのことをいい,Webブラウザ側に保存されます。
クッキーを使用するとセッションを管理できますが,ユーザーが(セキュリティ保護のために)クッキーを無効にしている場合,クッキーを使用したセッション管理はできません。よって,クッキー以外の方法でもセッションを管理できるようにしておく必要があります。
リンクのURLにセッションIDを埋め込む方法(URLリライティング)
リンクのURLにセッションIDを埋め込むことにより,セッション管理をすることができます。
※ クッキーを使用できない場合に使われる手法
フォームのデータにセッションIDを埋め込む方法(hiddenを使用)
フォームのデータにセッションIDを埋め込むことにより,セッション管理をすることができます。
※ クッキーやリンクのURLにセッションIDを埋め込む方法を補う形で使われる手法
プロキシサーバー
プロキシサーバーは,内部ネットワークから(インターネットなど)外部への通信を代行するサーバーです。一般的には,DMZに設置され,内部ネットワークのコンピューターから外部Webサーバーへのアクセスを中継します。
※ プロキシ…代理という意味
※ プロキシサーバーは,HTTPだけでなく,SMTP,IMAPなど,さまざまなプロトコルに対応可能
※ プロキシサーバーの詳細は,「ファイアウォール-ファイアウォールの分類-アプリケーションレベルゲートウェイ方式-プロキシサーバー -情報処理シンプルまとめ」を参照
Webのセキュリティ
Webのアクセス制御
Webのアクセス制御には,次のようなものがあります。
ファイアウォールやWAFによるアクセス制御
URLフィルタリング
特定の(有害な)Webサイト(URL)の閲覧を禁止(フィルタリング)する機能
コンテンツフィルタリング
特定のキーワードなど,コンテンツの内容を基に,Webサイトの閲覧を禁止(フィルタリング)する機能
※ ファイアウォールやWAFの詳細は,「ファイアウォール -情報処理シンプルまとめ」を参照
Webサイトでの認証
HTTP認証
ベーシック認証
ベーシック認証とは,利用者IDとパスワードを使用して行う認証をいいます。
※ パスワードは平文で送信される
ダイジェスト認証
ダイジェスト認証とは,利用者IDとパスワードを使用して行う認証をいいますが,利用者IDとパスワードは,秘匿するために,ハッシュ化したものを送信します。サーバー側では,登録済みの利用者IDとパスワードから同じようにハッシュ値を算出し,クライアントから受信したハッシュ値と比較して,一致した場合に認証します。
※ ハッシュ値(ダイジェスト値)…ハッシュ関数でハッシュ化した値
フォーム認証
フォーム認証とは,Webページ中に入力フォームを準備し,そこに入力されたデータの内容により認証を行う方式をいいます。利用者IDとパスワードをフォームデータとして送信するため,HTTPSにより暗号化する必要があります。
※ 現在,一般的に利用されている
※ HTTPSの詳細は後述
HTTPヘッダーによるセキュリティ対策
secure属性
secure属性とは,クッキーを,SSL/TLSで暗号化している場合にのみ送信するようにする属性のことをいいます(クッキーに設定します)。
※ セッション鍵などにsecure属性をつける
HTTPS(HTTP over SSL/TLS)
HTTPSとは,SSL/TLSで暗号化した通信路上で,HTTP通信を利用できるようにする技術をいいます。クライアントがHTTPSリクエストを送信する際には,サーバー認証やクライアント認証が行われ,SSLセッションが確立されます。
※ HTTPSは,プロトコルではない
※ クライアント認証はオプション
※ SSL/TLSについては,「」を参照
※ ディジタル署名については,「認証-ディジタル署名 -情報処理シンプルまとめ」を参照
まとめ
今回は,WWWについて,シンプルにまとめてみました。一つ一つ丁寧に理解し,覚えるように努めましょう。