Cookie
Cookie とは、サーバーが設定しブラウザが保存するキーバリューペアであり、同一オリジンへのリクエストに自動的に付送されてセッションと状態の管理に使われる。
目的
ステートレスな HTTP の上でクライアント側の状態を維持し、セッションとパーソナライズを可能にする。
メカニズム
サーバーは Set-Cookie ヘッダーで Cookie を設定し、ブラウザはそれを保存して、以後の同一オリジンへのリクエストで Cookie ヘッダーとして返す。属性には、スコープの Domain/Path、有効期限の Max-Age/Expires、HTTPS 限定の Secure、JavaScript のアクセスを防ぐ HttpOnly、サイト間制限の SameSite がある。
ユースケース
- セッション ID とログイン状態
- ショッピングカートと設定
- CSRF トークンの保存
- ユーザーのトラッキング
例
- 入力
Set-Cookie: sid=abc; HttpOnly; SecureOutputA hardened session cookieBlocking XSS reads
よくあるエラー
- Omitting HttpOnly lets XSS steal the cookie
- Set HttpOnly, Secure, and SameSite on session cookies
関連用語
CORS
CORS(Cross-Origin Resource Sharing)は、HTTP ヘッダーでページが別のオリジンのリソースにアクセスできるかを制御するブラウザのセキュリティ機構であり、クロスサイトな読み取りを防ぐ。 用語集
CSRF
CSRF(クロスサイトリクエストフォージェリ)は、攻撃者がログイン中のユーザーを騙して、知らないうちに悪意あるリクエストを対象サイトへ送らせる脆弱性である。 用語集
JWT
JWT(JSON Web Token)は、クレームを JSON オブジェクトとして安全に伝えるコンパクトで自己完結型のトークンである。ステートレス認証と情報交換に広く使われる。 用語集
OAuth
OAuth 2.0は、ユーザーの同意の下で、パスワードを共有せずにトークンを使ってサードパーティアプリケーションがユーザーのリソースへアクセスできるようにする認可フレームワークである。 用語集