問:Webシステムにおいて,セッションの乗っ取りの機会を減らすために,利用者のログアウト時にWebサーバ又はWebブラウザにおいて行うべき処理はどれか。ここで,利用者は自分専用のPCにおいて,Webブラウザを利用しているものとする。
ア.WebサーバにおいてセッションIDをディスクに格納する。
イ.WebサーバにおいてセッションIDを無効にする。
ウ.WebブラウザにおいてキャッシュしているWebページをクリアする。
エ.WebブラウザにおいてセッションIDをディスクに格納する。
[この問題の出題歴]
応用情報技術者 H30春期 問43
応用情報技術者 R3春期 問44
ST・SA・NW・SM・SC R3春季 問15
正解
イ
解説
IPAで公開されているセキュアプログラミング講座では、セッション乗っ取りの機会を低減させるための予防策として「セッションタイムアウト」と「明示的なログアウト機能」を挙げています。
セッションタイムアウト
Webアプリケーションにはセッションタイムアウト機能を設ける。ユーザはログアウト操作をすることを忘れてしまうことがある。
明示的なログアウトの機能
Webアプリケーションには明示的なログアウトの機能を設ける。できれば、各ページでログアウト操作が行えると良い。
そして利用者がログアウトを要求した場面では、Webアプリケーションは次のような操作を行うべきとしています。
Webサーバ側でセッションIDを確実に無効にする。その後同じセッションIDがクライアントから送られてきても受け付けない
Webブラウザ側のセッションIDを消去する
一般的なWebページのセッション管理方式では、WebブラウザとWebサーバでセッションIDを共有することで同じ利用者かどうかを判断しています。セッションIDさえ一致すれば、第三者からのアクセスを正規のアクセスとして判断してしまう可能性があるということですから、不要なセッションIDを有効なままにしておくのはセキュリティ上のリスクになります。
セッションIDを必要とするのはログイン中だけですから、ログアウトが要求された(セッションIDが不要になった)時点でWebサーバ側(可能であればWebブラウザも)のセッションIDを無効化し、それ以降は無効化されたセッションIDを拒否することで、セッション乗っ取りの機会を最小限に減らせます。
セッションタイムアウト
Webアプリケーションにはセッションタイムアウト機能を設ける。ユーザはログアウト操作をすることを忘れてしまうことがある。
明示的なログアウトの機能
Webアプリケーションには明示的なログアウトの機能を設ける。できれば、各ページでログアウト操作が行えると良い。
そして利用者がログアウトを要求した場面では、Webアプリケーションは次のような操作を行うべきとしています。
Webサーバ側でセッションIDを確実に無効にする。その後同じセッションIDがクライアントから送られてきても受け付けない
Webブラウザ側のセッションIDを消去する
一般的なWebページのセッション管理方式では、WebブラウザとWebサーバでセッションIDを共有することで同じ利用者かどうかを判断しています。セッションIDさえ一致すれば、第三者からのアクセスを正規のアクセスとして判断してしまう可能性があるということですから、不要なセッションIDを有効なままにしておくのはセキュリティ上のリスクになります。
セッションIDを必要とするのはログイン中だけですから、ログアウトが要求された(セッションIDが不要になった)時点でWebサーバ側(可能であればWebブラウザも)のセッションIDを無効化し、それ以降は無効化されたセッションIDを拒否することで、セッション乗っ取りの機会を最小限に減らせます。
したがって適切な処理は「イ」です。