Cookie

読み:くっきー / 英語表記:HTTP cookie

Webサーバが、ブラウザに小さなデータを保存させ、次からのリクエストで送り返させる仕組み。ログイン状態の維持などに使われる。Secure属性を付けたCookieは、HTTPSの通信でだけ送られる。

イマシルちゃんの解説

Webサイトは、じつは、毎回「はじめまして」の状態なんだ。
前に来た人かどうかを、自分では覚えていられないんだよ。

そこで、サイトが「この番号札を持っていてね」って、ブラウザに小さなメモを預けるんだ。
次に来たとき、ブラウザがそのメモを見せると、「あ、さっきの人だね!」ってわかるんだよ。
ただ、このメモを盗まれると大変だから、メモの扱い方を決めるルールもあるんだ。

より深い解説

定義

Cookieは、RFC 6265で定められた、HTTPで状態を管理する仕組みである。サーバは、応答の Set-Cookie ヘッダーで名前と値をブラウザに保存させ、ブラウザは、条件に合うリクエストの Cookie ヘッダーで、その値を送り返す。HTTPは、もともと前のリクエストの状態を覚えない(ステートレスな)プロトコルなので、ログイン状態やショッピングカートの中身を維持するのに使われる。

(応答)Set-Cookie: SID=a8f3...; Secure; HttpOnly; SameSite=Lax; Path=/; Max-Age=3600
(以降のリクエスト)Cookie: SID=a8f3...

主な属性

属性働き
SecureURLのスキームが https のときだけ、ブラウザがCookieを送る。暗号化されていない通信で盗聴されるのを防ぐ
HttpOnlyJavaScriptからCookieを読み出せないようにする。XSSでCookieを盗まれるのを防ぐ
SameSiteほかのサイトから送られるリクエストに、Cookieを付けるかを決める(Strict、Lax、None)。CSRFの対策になる
Expires、Max-Age有効期限。過ぎるとCookieは無効になる。指定しないと、ブラウザを閉じるまでの一時的なCookieになる
DomainCookieを送る先のドメインの範囲
PathURLのパスが、指定したパスで始まるときだけ送る

セキュリティ上の注意

注意点内容
セッションIDの保護セッションIDを入れたCookieには、Secure と HttpOnly を付ける
Domainを広げすぎないDomainを指定すると、サブドメインにも送られる。不要なら指定しない
重要な情報を入れないCookieの値は、利用者が見たり書き換えたりできる。パスワードなどを入れない

プライバシーの面

ほかのサイトに埋め込まれた広告などが発行するCookie(サードパーティCookie)は、多くのサイトをまたいで利用者を追跡するのに使われてきた。このため、主要なブラウザでは、サードパーティCookieを制限する動きが進んでいる。

実際の試験ではここに出る!

この用語が出てくる記事

↑