Cookie の変更点


#author("2022-09-17T13:08:43+09:00","default:k1rou","k1rou")
#author("2022-09-17T13:09:36+09:00","default:k1rou","k1rou")
*Cookie とは [#saf8093b]
**名称 [#j24e8e2d]
-クッキー

**概要 [#b6e4d59e]
-WebサーバがアクセスしてきたクライアントのWebブラウザにデータを保存する仕組み

*Cookie の用途 [#n294cc89]
--[[セッション]]管理
--アクセスしてきたクライアント(ユーザ)の識別

*Cookieの仕様 [#w59e6e33]
-「名前=値」の形式でデータを保存する
-サイズ 最大4,096B
-1つのWebブラウザに保存できる数:最大300(ドメイン毎)
-1台のWebサーバが1つのWebブラウザに発行できる数:最大20

**属性 [#d68c6057]
***domain [#l9f758b6]
--Cookieの送信先サーバの[[ドメイン]]。
--Cookie登録時にアクセスしたサーバ以外のドメイン(サブドメインが異なる同一ドメイン等)にもCookieを送信する場合に指定する。
---異なるサブドメインやホスト名のサーバ間でセッション情報などの共有が可能になる
--「.」から始まる形式で指定する
-Cookieの送信先サーバの[[ドメイン]]。
-Cookie登録時にアクセスしたサーバ以外のドメイン(サブドメインが異なる同一ドメイン等)にもCookieを送信する場合に指定する。
--異なるサブドメインやホスト名のサーバ間でセッション情報などの共有が可能になる
-「.」から始まる形式で指定する

***expires [#wad03b69]
--Cookieの有効期限。
--日時で指定する
--指定がない場合は、ブラウザの終了時に消去される
--指定がある場合は、ブラウザを終了しても消去されない
-Cookieの有効期限。
-日時で指定する
-指定がない場合は、ブラウザの終了時に消去される
-指定がある場合は、ブラウザを終了しても消去されない

***path [#d027c5b9]
--Cookieを有効とするサーバー上のディレクトリを指定。
--指定がない場合は、「/」を指定したものとして扱う。(Cookieを発行したページ配下のディレクトリを有効とする)
-Cookieを有効とするサーバー上のディレクトリを指定。
-指定がない場合は、「/」を指定したものとして扱う。(Cookieを発行したページ配下のディレクトリを有効とする)

***secure [#x321677a]
--secure属性をつけると、[[HTTPS]]での通信のみCookieの値をサーバーに送信するようになる。
--指定することで、盗聴によりCookieが盗まれるのを防ぐことができる。
-secure属性をつけると、[[HTTPS]]での通信のみCookieの値をサーバーに送信するようになる。
-指定することで、盗聴によりCookieが盗まれるのを防ぐことができる。

***HttpOnly [#fc8e50f4]
--HttpOnly属性をつけると、JavaScriptからCookieの値にアクセスできない。
--[[XSS]]によるCookieとして登録した[[セッションID]]を盗もうとする攻撃の対策に使う。
--"document.cookie"を用いたCookieへのアクセスを禁止する
--指定することで、[[XSS]]によりCookieが盗まれるのを防ぐことができる。
--旧バージョンのブラウザで対応していないものがある(IE6 SP1より前)
-HttpOnly属性をつけると、JavaScriptからCookieの値にアクセスできない。
-[[XSS]]によるCookieとして登録した[[セッションID]]を盗もうとする攻撃の対策に使う。
-"document.cookie"を用いたCookieへのアクセスを禁止する
-指定することで、[[XSS]]によりCookieが盗まれるのを防ぐことができる。
-旧バージョンのブラウザで対応していないものがある(IE6 SP1より前)

***SameSite [#w4c396cf]
--None
--Lax
--Strict
-None
-Lax
-Strict

*クライアント側にCookieを登録する方法 [#cf0a16c9]
**HTTPヘッダを使う [#p9200979]
-Set-Cookie
--Webサーバがクライアントに応答する際にSet-Cookieヘッダを付加する。

**JavaScriptを使う [#r6bf53c9]
-document.cookieプロパティを使う。

*クライアント側に登録したCookie情報の扱い [#n23f3b09]
-Webブラウザから同じドメインのウェブページにアクセスする際に、登録されているCookie情報がHTTPヘッドに付加して送信される。
-送信先のサーバは、Cookie登録時のサーバのみ。(デフォルト)

**Cookieの有効期限 [#mabc38ca]
-登録するCookieに有効期限を設定することができる
-有効期限が設定されていないCookieは、ブラウザを終了すると無効になる。

*Cookieの種類 [#ec48e743]
-Persistent Cookie
-Session Cookie

*セキュリティ [#vd708205]
**クッキーモンスターバグ [#q766e38e]
-Cookie Monster Bug
-クッキーのdomain属性が正しく機能しないで、指定した範囲を超えて有効になる[[Webブラウザ]]のバグ。
--サブドメインを持つURLのサイトから、[[ドメイン]]のみ(サブドメインを持たない)のURLのサイトに対して、有効なCookieを発行できる問題。
-脆弱性の対象となる攻撃
--[[セッションフィクセーション]]攻撃
--[[CSRF]]
-一部の古いブラウザが持っている問題。
--IE7, IE8.1には、地域型JPドメインと都道府県型JPドメインがこのバグを持っている。

*ファーストパーティCookieとサードパーティCookie [#dc050c54]
-ファーストパーティCookie
--HTMLと同じドメインのサーバーから送信されるCookie

-サードパーティCookie
--HTMLと異なるドメインのサーバーから送信されるCookie

*関連サイト [#q66e44eb]
-Cookielessで再構築が必須となるデジタルマーケティング - NRI~



*関連用語 [#d98981d8]
-[[hidden]]
-[[HTTP]]
-[[ITP]] -Intelligent Tracking Prevention
-[[セッション]]
-[[Webストレージ]]
-[[クッキー法]] -[[eプライバシー規則]]