Webセキュリティ入門:HTTP・Cookie・脆弱性
Cookieはなぜ自動で送られるのか
この回でやること
Cookieはブラウザが覚えて自動で送る値です。その「自動」が便利さと危うさの両方を生みます。
- 読む 約 5 分
- 最後にクイズ 1 問
このレッスンで学ぶこと
Cookie は、サーバーが渡した値をブラウザが保存し、次からの要求に自動で付け直す仕組みです。ログイン状態を保つ土台であり、同時に危うさの出どころでもあります。
読み終えるころには、なぜ Cookie だけでは足りないのかを説明できます。
保存して自動で送る
サーバーが返答に Set-Cookie を付けると、ブラウザはその値を保存します。
http
Set-Cookie: session=abc123以降、同じ相手への要求に、ブラウザが自動で付けます。
http
Cookie: session=abc123利用者は何もしません。この自動さが、ログイン状態を保つ仕組みの土台です。
自動であることの裏側
ここが今回の要です。自動で付くということは、誰がその要求を起こしたかに関係なく付くということです。
他人のサイトに置かれたフォームやリンクから、あなたのサービスへ要求が飛んだときも、Cookie は付きます。ブラウザは「利用者本人が意図したか」を区別しません。
Cookie が付いていることは、そのブラウザが持っていることを示すだけです。利用者がその操作を意図したことは示しません。ここが後で学ぶ CSRF の出発点になります。
読まれる危険
Cookie は、JavaScript から読めてしまう場合があります。ページに他人のスクリプトを埋め込まれると、そこから持ち出されます。
持ち出された値は、そのまま本人として使えます。合言葉を知らなくても構いません。識別のための値は、合言葉と同じ重さで扱います。
どこに送られるか
Cookie には送信先の範囲があります。ドメインとパスで決まります。
範囲を広く取ると、サブドメインにも送られます。同じ親ドメインに検証環境や他部署のサイトがあると、そこにも届きます。必要な範囲だけに絞るのが原則です。