応用情報技術者平成30年春期 午前問43
Webシステムにおいて,セッションの乗っ取りの機会を減らすために,利用者のログアウト時にWebサーバ又はWebブラウザにおいて行うべき処理はどれか。ここで,利用者は自分専用のPCにおいて,Webブラウザを利用しているものとする。
1、セッション乗っ取りの機会を低減させるための予防策
IPAで公開されているセキュアプログラミング講座では、セッション乗っ取りの機会を低減させるための予防策として「セッションタイムアウト」と「明示的なログアウト機能」を挙げています。
・セッションタイムアウト
Webアプリケーションにはセッションタイムアウト機能を設ける。ユーザはログアウト操作をすることを忘れてしまうことがある。
・明示的なログアウトの機能
Webアプリケーションには明示的なログアウトの機能を設ける。できれば、各ページでログアウト操作が行えると良い。
そして利用者がログアウトを要求した場面では、Webアプリケーションは次のような操作を行うべきとしています。
1)、Webサーバ側でセッションIDを確実に無効にする。
その後同じセッションIDがクライアントから送られてきても受け付けない
2)、Webブラウザ側のセッションIDを消去する
・一般的なWebページのセッション管理方式では、WebブラウザとWebサーバでセッションIDを共有することで同じ利用者かどうかを判断しています。
・セッションIDさえ一致すれば、第三者からのアクセスを正規のアクセスとして判断してしまう可能性があるということですから、不要なセッションIDを有効なままにしておくのはセキュリティ上のリスクになります。
・セッションIDを必要とするのはログイン中だけですから、ログアウトが要求された(セッションIDが不要になった)時点でWebサーバ側(可能であればWebブラウザも)のセッションIDを無効化し、それ以降は無効化されたセッションIDを拒否することで、セッション乗っ取りの機会を最小限に減らせます。
上記の詳細説明では、ちょっと長いですが、下記はポイントと思っております。
・セッションタイムアウト がWebサーバーの設定により違いますが、
ユーザーが利用終了からセッション無効までは、時間かかります。 例えば、30分、2時間など
・ブラウザのキャッシュを手動で都度削除するのはいいですが、セッションタイムアウトがくるまでリスクがあるので、推奨できません。特に、もしセッションタイムアウトがすごく長く設定されると、リスクが増えますね。
・セッションタイムアウトがリスクがありますので、明示的なログアウトの機能があれば、それを利用した方がリスクが低減できます。すぐにセッションが無効になりますので。一番推奨される方法です。