コンテンツにスキップ

面接問題:ユーザーセッションの保存方法(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 等で共有する