以下の説明は、セッション・アフィニティ機能で記した事項の理解を前提にしています。もしサーバ側のセキュリティ対策が不十分であれば、次のようなリスクに直面します。
- セッション変数を使用するシステムでは、正規ユーザー用に採番されたセッションIDが、悪意あるハッカーに盗まれると、正規ユーザーになりすまして様々な操作を行われる(セッション・ハイジャックされる)リスクがあります。
- セッション変数を使用しないシステムであっても、正規ユーザー用のユーザーID等の重要情報が設定されたCookie等が、悪意あるハッカーに盗まれると、セッション・ハイジャックされるリスクがあります。
- サーバ側アプリケーションにおけるセッション・ハイジャック対策の基本はログイン認証が成功した時点のユーザーの環境と、その後のユーザーの環境が同じであることを確認することです。ユーザーの環境とはIPアドレス・ブラウザの種類・ブラウザで使用する言語等です。(IPアドレスはモバイル系プロバイダを中心にインターネット接続後であっても変更されることがあるそうなので、注意してください。)
- 上記以外の対策として「session_regenerate_id関数を使用する」「生成するHTMLのサニタイズ(PHPのhtmlspecialchars関数等で行う特殊文字変換。いわゆるクロスサイトスクリプティング対策)を徹底する」のは言うまでもありません。(セッション・ハイジャック以前のセキュリティ対策として「ログインの都度、ログインしたIPアドレスを登録メールアドレスに通知する」「ログインの都度、ワンタイムパスワードを登録メールアドレスに通知し、ワンタイムパスワードが一定時間内に入力された場合のみログインを認める」「ログイン用のIDやパスワード等が変更された場合、登録メールアドレスに、変更したIPアドレスと一緒にその旨を通知する」「ログインに一定回数連続して失敗するとアカウントをロックし、登録メールアドレスに、ログインしようとしたIPアドレスと一緒にその旨を通知する」「重複ログインを禁止する」等も必要に応じて検討すべきです。)
- セッション・ハイジャック対策は、ユーザーへの啓蒙がより重要と思われます。具体的には、OSやブラウザ、Flash PlayerやAcrobat Readerは支障が無ければ最新版を使用してもらう、ソフトウェアのインストール(ブラウザへのプラグイン追加も含む)は慎重に行ってもらう、ITに詳しくなさそうな人やサイトから紹介された短縮URLは確認してからアクセスしてもらう(短縮URL 確認をキーワードに検索すれば、短縮URLを確認できるサイトはたくさんヒットします)等です。