セッション管理とは、クライアントとサーバ間で通信を行う際に、通信相手の特定や相手の状態の把握を行うことです。また通信相手を特定した状態の通信のことを「セッション」と呼びます、セッションができるとアプリケーションとのデータのやり取りができるようになります。多くの場合、HTTPによる通信やWebアプリケーションの構築に関して、使われることの多い用語です。
HTTPはステートレス(クライアントとの通信状態を保持しない)なプロトコルであるため、Webブラウザからのリクエスト内容が同一であれば、Webサイトは毎回同じレスポンスを返すことになります。しかしこれでは、ログインしたユーザ毎に異なる処理や、複数のWebページにまたがった「一連の処理(トランザクション)」は行えません。このような処理を行うには、アクセスしてきたユーザが誰なのかを識別し、これまでにどのような処理を行ってきたのかという「状態」を把握する必要があるからです。そのために用いられるのがセッション管理です。
Webアプリケーションにおけるセッション管理の方法としては、Cookieを使用する方法、URLにセッションIDを記載する方法、フォームにセッションIDを埋め込む方法があります。
この中で最も一般的なのが、Cookieを使用する方法です。これはWebサーバからCookieと呼ばれる情報をWebブラウザに送り、Webブラウザ側の記憶領域に格納しておくというものです。Webブラウザは次にWebサーバにアクセスする際に、リクエストの中にCookieを埋め込んで送信します。これによってWebサーバは、このWebブラウザとの過去の通信状態(セッション情報)を把握できます。ただしクロスサイト スクリプティング(XSS)の脆弱性を抱えたWebサイトの場合、この攻撃によってCookie情報を不正に取得される危険性があります。
URLにセッションIDを埋め込む方法は、Cookieが使えない場合に、代替手段として利用されるケースが多いようです。この方法を使用した場合には、アクセス先のURLに「http://f5/com/index.html?sid=1」のように、パラメータとしてセッションIDが付加されます。付加されたセッションIDはWebブラウザのアドレスバーに表示され、ユーザがIDを改ざんすることも容易なので、安全な方法とはいえません。
フォームにセッションIDを埋め込む方法は比較的安全な方法ですが、Webアプリケーションの作成に手間がかかり、ページ移動時に「<a>タグ」が使えない、ブラウザの「戻る」ボタンが正常に機能しなくなる、といった問題が発生します。そのため特に重要なフォームでの使用に限定されているケースが多いようです。
最も現実的な方法は、XSSの脆弱性を解消した上で、Cookieを使用することだと言えるでしょう。F5の「F5 BIG-IP」を利用することで、XSSへの対応が容易になります。