Cookie
2022-09-17 (土) 13:09:36
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より前)
SameSite †
- None
- Lax
- Strict
クライアント側にCookieを登録する方法 †
HTTPヘッダを使う †
- Set-Cookie
- Webサーバがクライアントに応答する際にSet-Cookieヘッダを付加する。
JavaScriptを使う †
- document.cookieプロパティを使う。
クライアント側に登録した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