セッションタイムアウト【session timeout】
概要

ネットワークサービスやWebシステムでは、ログインなど利用開始の手続きを行ってから、一連の通信や操作のやり取りが続く期間を「セッション」(session)という。同一セッション内であれば、やり取りのたびに認証手続きを繰り返す必要がなく、連続した操作が可能になる。
セッションはログアウトなどの手続きによって明示的に終了させることができる。しかし、利用者が終了手続きを行わずに離席したり、通信が途中で切断されたりすることもある。このような場合にセッションを開いたままにしておくと、第三者による不正利用やなりすましを許すリスクが生じるほか、サーバ側で不要な接続情報を保持し続けることになり、システム資源の無駄遣いを招く。
これらの問題を避けるため、システム側には最後の通信や操作から一定時間を計測する仕組みが備えられており、その時間内に新たな応答が検知されない場合に自動的にセッションを破棄するタイムアウト処理が行われる。判定方式には、サーバ側で最終アクセス時刻を監視して無操作時間を計る方式や、通信接続そのものの維持状態を監視する方式がある。
タイムアウトまでの時間はシステムの種類や用途、セキュリティ要件によって異なる。時間を短く設定しすぎると、利用者が少し他の作業をしている間にセッションが切れてしまい、再ログインの手間が生じる。逆に長く設定しすぎると、離席中のセッションが乗っ取られるリスクが高まるほか、同時接続可能な利用者数の制約も厳しくなる。ECサイトなどのWebサービスでは30分程度に設定されることが多く、オンラインバンキングや業務システムのように機密性が高い環境では、数分程度の短い時間に設定される傾向がある。
セッションタイムアウトが発生すると、サーバ側に保持されていたセッション情報は削除または無効化され、利用者が再び操作を行った場合は再ログインや再認証を求められることが多い。Webサイトでは「一定時間操作がなかったためログアウトしました」といったメッセージが表示される場合もある。タイムアウトが近づいた際に警告を表示し、操作の継続や延長の意思を確認する仕組みを備えるWebアプリケーションも存在する。
利用者が継続的に操作していても、セッション開始から一定時間が経過した時点で強制的に再認証を求める「絶対タイムアウト」(absolute timeout)方式を併用するシステムもある。操作自体に制限時間を設ける方式で、これは第三者による不正利用や、共有端末でのログイン状態の放置といったリスクを低減するために用いられる仕組みである。