Cookie とは†
- WebサーバがアクセスしてきたクライアントのWebブラウザにデータを保存する仕組み
Cookie の用途†
- セッション管理
- アクセスしてきたクライアント(ユーザ)の識別
Cookieの仕様†
- 「名前=値」の形式でデータを保存する
- サイズ 最大4,096B
- 1つのWebブラウザに保存できる数:最大300(ドメイン毎)
- 1台のWebサーバが1つのWebブラウザに発行できる数:最大20
- domain
- Cookieの送信先サーバのドメイン。
- Cookie登録時にアクセスしたサーバ以外のドメイン(サブドメインが異なる同一ドメイン等)にもCookieを送信する場合に指定する。
- 異なるサブドメインやホスト名のサーバ間でセッション情報などの共有が可能になる
- 「.」から始まる形式で指定する
- expires
- Cookieの有効期限。
- 日時で指定する
- 指定がない場合は、ブラウザの終了時に消去される
- 指定がある場合は、ブラウザを終了しても消去されない
- path
- Cookieを有効とするサーバー上のディレクトリを指定。
- 指定がない場合は、「/」を指定したものとして扱う。(Cookieを発行したページ配下のディレクトリを有効とする)
- secure
- secure属性をつけると、HTTPSでの通信のみCookieの値をサーバーに送信するようになる。
- 指定することで、盗聴によりCookieが盗まれるのを防ぐことができる。
- HttpOnly
- HttpOnly属性をつけると、JavaScriptからCookieの値にアクセスできない。
- XSSによるCookieとして登録したセッションIDを盗もうとする攻撃の対策に使う。
- "document.cookie"を用いたCookieへのアクセスを禁止する
- 指定することで、XSSによりCookieが盗まれるのを防ぐことができる。
- 旧バージョンのブラウザで対応していないものがある(IE6 SP1より前)
クライアント側にCookieを登録する方法†
HTTPヘッダを使う†
- Set-Cookie
- Webサーバがクライアントに応答する際にSet-Cookieヘッダを付加する。
JavaScriptを使う†
クライアント側に登録したCookie情報の扱い†
- Webブラウザから同じドメインのウェブページにアクセスする際に、登録されているCookie情報がHTTPヘッドに付加して送信される。
- 送信先のサーバは、Cookie登録時のサーバのみ。(デフォルト)
Cookieの有効期限†
- 登録するCookieに有効期限を設定することができる
- 有効期限が設定されていないCookieは、ブラウザを終了すると無効になる。
Cookieの種類†
- Persistent Cookie
- Session Cookie
セキュリティ†
クッキーモンスターバグ†
- Cookie Monster Bug
- クッキーのdomain属性が正しく機能しないで、指定した範囲を超えて有効になるWebブラウザのバグ。
- サブドメインを持つURLのサイトから、ドメインのみ(サブドメインを持たない)のURLのサイトに対して、有効なCookieを発行できる問題。
- 脆弱性の対象となる攻撃
- 一部の古いブラウザが持っている問題。
- IE7, IE8.1には、地域型JPドメインと都道府県型JPドメインがこのバグを持っている。
ファーストパーティCookieとサードパーティCookie†
- ファーストパーティCookie
- HTMLと同じドメインのサーバーから送信されるCookie
- サードパーティCookie
- HTMLと異なるドメインのサーバーから送信されるCookie
関連サイト†
- Cookielessで再構築が必須となるデジタルマーケティング - NRI
関連用語†