平成27年秋期試験午後問題 問4
問4 ネットワーク
Webサイトにおけるセッション管理に関する次の記述を読んで,設問1~4に答えよ。
セッションとは,一連の処理の始まりから終わりまでを表す概念である。例えば,あるショッピングサイトでは,会員がログインし,その後,商品の選択,注文,決済など,何度もWebサイトヘのアクセスを繰り返しながら商品を購入し,最後にログアウトする。このときの,ログインからログアウトまでが同じ一つのセッションである。
Webサイトヘのアクセスに使うプロトコルであるHTTPではセッションの扱いについての規定はないが,WebサイトとWebブラウザの間でセッションIDを送受信することで,一連の通信を一つのセッションとして管理できる。ここで,セッションIDとはセッションごとに割り振られた一意の文字列である。
Webサイトは,セッションの開始とともにセッションIDを生成し,Webブラウザに送る。Webブラウザは,Webサイトから受信したセッションIDを含めたHTTPリクエストをWebサイトに送る。Webサイトは,同じセッションIDをもつHTTPリクエストを,同一セッションの一連のHTTPリクエストとみなす。一般に,会員IDや選択された商品の情報などのセッションに関係する情報は,Webサイト側がセッションIDに関連付けて管理する。
セッションIDは注意して取り扱う必要がある。例えば,セッションIDの有効期間をできるだけ短くしたり,セッションIDを推測しにくい文字列にしたり,セッションIDの送受信を暗号化されている通信路で行ったりするなど,セキュリティ上のリスクを抑える工夫をする。
セッションIDの送受信には,主に次に挙げる方法が用いられている。
セッションとは,一連の処理の始まりから終わりまでを表す概念である。例えば,あるショッピングサイトでは,会員がログインし,その後,商品の選択,注文,決済など,何度もWebサイトヘのアクセスを繰り返しながら商品を購入し,最後にログアウトする。このときの,ログインからログアウトまでが同じ一つのセッションである。
Webサイトヘのアクセスに使うプロトコルであるHTTPではセッションの扱いについての規定はないが,WebサイトとWebブラウザの間でセッションIDを送受信することで,一連の通信を一つのセッションとして管理できる。ここで,セッションIDとはセッションごとに割り振られた一意の文字列である。
Webサイトは,セッションの開始とともにセッションIDを生成し,Webブラウザに送る。Webブラウザは,Webサイトから受信したセッションIDを含めたHTTPリクエストをWebサイトに送る。Webサイトは,同じセッションIDをもつHTTPリクエストを,同一セッションの一連のHTTPリクエストとみなす。一般に,会員IDや選択された商品の情報などのセッションに関係する情報は,Webサイト側がセッションIDに関連付けて管理する。
セッションIDは注意して取り扱う必要がある。例えば,セッションIDの有効期間をできるだけ短くしたり,セッションIDを推測しにくい文字列にしたり,セッションIDの送受信を暗号化されている通信路で行ったりするなど,セキュリティ上のリスクを抑える工夫をする。
セッションIDの送受信には,主に次に挙げる方法が用いられている。
- HTTPリクエストの拡張ヘッダーやWebサイトがWebブラウザに送信するHTTPレスポンスの拡張ヘッダーに,クッキーの値としてセッションIDを記載する。このとき,Webブラウザでクッキーの管理が有効になっている必要がある。
- HTML中のリンク先やフォームの送信先を示すURLの中にセッションIDを埋め込む(次の例では下線の箇所)。
例:<a href="https://www.example.com?sid=セッションID">top</a> - HTML中のフォームでフィールド hidden にセッションIDを埋め込む(次の例では下線の箇所)。
例:<input type="hidden" name="sid" value="セッションID">
広告
設問1
次の記述中の に入れる適切な答えを,解答群の中から選べ。
ショッピングサイトAでの商品購入の流れは図1のとおりである。注文と決済に必要な情報をセッションIDに関連付けて管理するため,ショッピングサイトAでは,閲覧者がaにセッションIDを生成し,ログアウト時に破棄することとした。
ショッピングサイトAでの商品購入の流れは図1のとおりである。注文と決済に必要な情報をセッションIDに関連付けて管理するため,ショッピングサイトAでは,閲覧者がaにセッションIDを生成し,ログアウト時に破棄することとした。
a に関する解答群
- サイトの閲覧を開始したとき
- 商品を閲覧するたび
- 商品を選択するたび
- ログインに成功したとき
解答選択欄
- a:
- a=エ
解説
「ログインからログアウトまでを同じ1つのセッション」として扱うので、ログイン時にセッションIDを生成し、ログアウトするまで同じセッションIDを使わせることで一連の通信を同一セッションとして管理します。したがってセッションIDの生成タイミングはセッション開始時点である「ログインに成功したとき」が適切です。
∴a=エ
- セッションハイジャックや、セッション固定攻撃などを防ぐためにセッションIDの発行は認証後に行う必要があります。
- ログインからログアウトまでを同じセッションIDを使用するとあるので、商品閲覧の度にセッションIDが変わってしまう仕様は不適切です。
- 「イ」と同じく、商品選択の度にセッションIDが変わってしまうため不適切です。
- 正しい。
- セッションハイジャック
- 正規ユーザに与えられたセッションIDを攻撃者が盗むことでセッションを乗っ取る攻撃
- セッション固定攻撃
- 攻撃者が入手したセッションIDを含むURLへ正規ユーザを誘導し、そのページでログインさせることで攻撃者もそのセッションIDを使用して認証が必要なページにアクセスする攻撃
広告
設問2
セッションIDとして使う文字列として適切な答えを,解答群の中から選べ。
解答群
- 会員IDと同じ文字列
- 会員IDと通し番号を連結した文字列
- 十分に長いランダムな文字列
- 通し番号を示す文字列
解答選択欄
- ウ
解説
セッションIDとして使用する文字列は、攻撃者の悪用※から守るために、推測しにくくパスワードクラックに耐え得る十分な強度をもつ必要があります。一般的には、セッション開始の度にシステム側で生成した「多くの文字種で構成された十分な長さをもつランダムな文字列」がセッションIDとして付与されます。
∴ウ:十分に長いランダムな文字列
- 容易に推測可能であるため不適切です。
- 会員番号と通り番号を組合わせた文字列は、それぞれを単体で使用するよりは攻撃に対する耐性が高くなります。しかしある時点で付与されるセッションIDから会員番号部分と通し番号部分を明らかにし、推測される通し番号からセッションIDを合成することは容易であるため不適切です。
- 正しい。セッションIDとして使用する文字列は推測不可能、かつ、総当り攻撃に対する耐性をもつために十分な長さをもつものでなければなりません。
- 付与されるセッションIDが通し番号であることに気付けば、次に使用される番号を推測することは容易なので不適切です。
広告
設問3
次に示す表は,(A)~(C)の特徴と,本文中のセッションIDを送受信する(1)~(3)の方法の組合せを示したものである。表中の に入れる適切な答えを,解答群の中から選べ。
b に関する解答群
解答選択欄
- b:
- b=ウ
解説
〔(A)の方法〕URLの中にセッションIDを埋め込む(2)の方法の特徴です。クッキーの有効無効に関わらずセッションIDを受け渡すことができますが、攻撃者がセッションIDを含むURLを生成し、利用者をそのセッションに誘導するなどの攻撃をうける脆弱性となりやすいことも特徴の1つです。
〔(B)の方法〕
クッキーにセッションIDを埋め込む(1)の方法の特徴です。(1)の説明にあるように、ブラウザの設定でクッキーの使用が無効にされているとセッションIDの受け渡しを行うことができません。クッキーが無効にされている場合は(2)の方法などを併用してセッション管理を行うのが一般的です。
〔(C)の方法〕
HTMLフォーム中のhiddenフィールドのValue属性にセッションIDを埋め込む(3)の方法の特徴です。HTMLの仕組みだけで考えた場合※、HTMLフォームの内容をWebサーバに送るには送信ボタン(typeが"submit"のフォーム部品)を使用してページ遷移を行う必要があります。通常のリンクに用いる<a>タグからのページ遷移では(hiddenフィールドに格納されたセッションIDを含む)HTMLフォームの内容はWebサーバに送信されずセッションの維持ができません。
したがって正しい組合せは、「(A)→(2),(B)→(1),(C)→(3)」になります。
∴b=ウ
※JavaScriptを使用すれば、任意のタイミングでフォームの送信を行うことができるため<a>タグのクリックイベントに呼応してフォームを送信するようなことも可能です。
広告
設問4
次の記述中の に入れる正しい答えを,解答群の中から選べ。
クッキーは名前と値の組であり,WebサイトとWebブラウザでそれぞれ管理される。Webサイトは,Webブラウザに管理させたいクッキーを,Webブラウザに送信するHTTPレスポンスの拡張ヘッダーに記載する。Webブラウザは,Webサイトから受信したクッキーを,そのWebサイトに送信するHTTPリクエストの拡張ヘッダーに記載する。
クッキーの値としてセッションIDを記載することで,WebサイトとWebブラウザの間で,セッションIDを送受信することができる。
Webサイトは,HTTPレスポンスに記載するクッキーに,付加情報として送信先ドメイン名の指示を加えることができる。これは,Webブラウザに対し,当該クッキーをどのドメイン又はホスト宛てのHTTPリクエストに記載すべきかを指示するもので,HTTPレスポンスの送信元ホスト名か,より上位のドメイン名が指示されているクッキーだけが有効である。例えば,ホスト www.example.com の上位のドメインは example.com と com である。ただし,多くの組織の上位ドメインとなる com や org などは有効とはみなさない。Webブラウザは,有効でないドメイン名が指示されたクッキーを管理しない。
Webブラウザは,管理しているクッキーを,指示されたドメイン名と等しいホストか,より下位ドメインのホスト宛てに送信するHTTPリクエストに記載する。例えば,送信先ドメイン名として,example.com が指示されているクッキーは,example.com の下位ドメインのホストである,www.example.com や www.foo.example.com 宛てに送信するHTTPリクエストに記載される。
送信先ドメイン名として example.com が指示されたクッキーを www.example.com から受け取ったWebブラウザは,www.example.com の他,www2.example.com などの example.com の下位ドメインのホストヘ送信するHTTPリクエストにも,当該クッキーを記載する。
クッキーを受け入れる設定であって,かつ,クッキーを一つも管理していないWebブラウザから http://www.foo.example.com/index.html にアクセスし,その応答として受け取ったHTTPレスポンスには,表1に挙げる名前をもつクッキーが含まれており,それぞれに,送信先ドメイン名の指示が付加されていた。Webブラウザは,このうちのc個のクッキーを管理する。この直後に,同じWebブラウザから http://www.bar.example.com/index.html にアクセスするときにHTTPリクエストに記載されるクッキーは,dである。
クッキーは名前と値の組であり,WebサイトとWebブラウザでそれぞれ管理される。Webサイトは,Webブラウザに管理させたいクッキーを,Webブラウザに送信するHTTPレスポンスの拡張ヘッダーに記載する。Webブラウザは,Webサイトから受信したクッキーを,そのWebサイトに送信するHTTPリクエストの拡張ヘッダーに記載する。
クッキーの値としてセッションIDを記載することで,WebサイトとWebブラウザの間で,セッションIDを送受信することができる。
Webサイトは,HTTPレスポンスに記載するクッキーに,付加情報として送信先ドメイン名の指示を加えることができる。これは,Webブラウザに対し,当該クッキーをどのドメイン又はホスト宛てのHTTPリクエストに記載すべきかを指示するもので,HTTPレスポンスの送信元ホスト名か,より上位のドメイン名が指示されているクッキーだけが有効である。例えば,ホスト www.example.com の上位のドメインは example.com と com である。ただし,多くの組織の上位ドメインとなる com や org などは有効とはみなさない。Webブラウザは,有効でないドメイン名が指示されたクッキーを管理しない。
Webブラウザは,管理しているクッキーを,指示されたドメイン名と等しいホストか,より下位ドメインのホスト宛てに送信するHTTPリクエストに記載する。例えば,送信先ドメイン名として,example.com が指示されているクッキーは,example.com の下位ドメインのホストである,www.example.com や www.foo.example.com 宛てに送信するHTTPリクエストに記載される。
送信先ドメイン名として example.com が指示されたクッキーを www.example.com から受け取ったWebブラウザは,www.example.com の他,www2.example.com などの example.com の下位ドメインのホストヘ送信するHTTPリクエストにも,当該クッキーを記載する。
クッキーを受け入れる設定であって,かつ,クッキーを一つも管理していないWebブラウザから http://www.foo.example.com/index.html にアクセスし,その応答として受け取ったHTTPレスポンスには,表1に挙げる名前をもつクッキーが含まれており,それぞれに,送信先ドメイン名の指示が付加されていた。Webブラウザは,このうちのc個のクッキーを管理する。この直後に,同じWebブラウザから http://www.bar.example.com/index.html にアクセスするときにHTTPリクエストに記載されるクッキーは,dである。
c に関する解答群
- 1
- 2
- 3
- 4
- 5
d に関する解答群
- c1
- c1とc2
- c1とc5
- c4とc5
- c5
解答選択欄
- c:
- d:
- c=ウ
- d=ア
解説
〔cについて〕表1中の5つのドメインの上位・下位を木構造で表現すると以下のようになります。Webブラウザが管理する有効なクッキーは、HTTPレスポンスの送信元ホスト名、又はより上位のホスト名だけです。設問においてクッキーを含むHTTPレスポンスは"http://www.foo.example.com/index.html"から受け取ったので、送信元ドメインである"www.foo.example.com"、及び上記の木構造において"www.foo.example.com"の上位に位置する"foo.example.com"、"example.com"のいずれかがドメイン指定されているクッキーのみがブラウザに保存され管理されることになります。したがって管理されるクッキーはc1、c2、c3の3つになります。∴c=ウ:3
〔dについて〕
Webブラウザは、指示されたドメインと等しいか、より下位ドメインのホスト名にアクセスするときにのみ管理するクッキーをWebサーバに送信します。
ブラウザがアクセスするURLは"http://www.bar.example.com/index.html"、そのホスト名は"www.bar.example.com"です。このホスト名"www.bar.example.com"がクッキーの送信先ドメイン名の指示と同じか、そのドメイン名の下位ドメインに当たる場合に、クッキーはサーバに送信されることになります。
- C1 … example.com
- "www.bar.example.com"は、指示されたドメイン"example.com"の下位ドメインに当たるので送信対象となります。
- C2 … foo.example.com
- "www.bar.example.com"は、指示されたドメイン"foo.example.com"の下位ドメインではないので送信されません。
- C3 … www.foo.example.com
- "www.bar.example.com"は、指示されたドメイン"www.foo.example.com"の下位ドメインではないので送信されません。
∴d=ア:c1
広告
広告