よくネットショッピングでユーザ名とパスワードでログインした時「ログインしたままにする」というようなオプションがありますよね?そうしたら、ブラウザを終了、あるいはOSをシャットダウンした場合など、再度ブラウザを起動したらログインした状態になっています。いったいどういう仕組みなのでしょうか。
Webサービスの「ログインしたままにする」機能は、主に Cookie と セッショントークン で実現されています。
ユーザーがログインすると、サーバーはユーザーを識別するための セッショントークン(認証キー) を生成し、
これを 有効期限の長い Cookie としてブラウザに保存します。
次回以降、ブラウザは自動的にその Cookie を送信します。
サーバーがその情報を確認し有効であれば、ID・パスワードの再入力なしでログイン状態が継続されます。
多くの Web サービスは、Cookie の安全性を高めるために以下の対策を行っています。
+--------------------+--------------------------------------------------------------+
| 対策 | 効果 |
+--------------------+--------------------------------------------------------------+
| HttpOnly フラグ | JavaScript から Cookie へのアクセスを禁止し、 |
| | XSS による盗難をほぼ防ぐ |
+--------------------+--------------------------------------------------------------+
| Secure フラグ | Cookie を HTTPS 通信のときのみ送信し、盗聴を防ぐ |
+--------------------+--------------------------------------------------------------+
| トークンの短命化 | ・トークンの有効期限を短く設定 |
| | ・ログアウト時に即無効化 |
| | → 不正利用できる時間を大きく減らす |
+--------------------+--------------------------------------------------------------+
キーワード:Webサービス