面接問題:ユーザーセッションの保存方法(Cookie / localStorage / サーバーサイド)¶
問題¶
ユーザーセッションを保存する必要がある。Cookie・localStorage・サーバーサイドセッション、どれを選ぶか?理由は?
回答整理¶
| 方式 | 特徴 | 向いているケース |
|---|---|---|
| Cookie | HttpOnly + Secure + SameSite で XSS/CSRF 耐性あり。有効期限・スコープ設定可 | 認証セッション全般(推奨) |
| localStorage | JS から読み書き可能。有効期限なし。XSS に弱い | 認証情報の保存には不向き |
| サーバーサイドセッション | セッションIDのみクライアントに渡す。サーバーで状態管理 | 高セキュリティが必要な場合、スケール時はRedis等が必要 |
ポイント¶
- 認証トークンを localStorage に保存するのはアンチパターン(XSS で盗まれる)
- Cookie の
HttpOnlyフラグで JS からアクセス不可にする SameSite=Strict/Laxで CSRF を防ぐ- スケールアウトする場合はサーバーサイドセッションを Redis 等で共有する