セキュリティ

Cookieとは?Cookieの各属性を分かりやすく解説

  1. HOME >
  2. IT用語 >
  3. セキュリティ >

Cookieとは?Cookieの各属性を分かりやすく解説

Cookie

Cookie(読み:クッキー)とは、Webサイトにアクセスした際に、パソコンやスマートフォンなどのブラウザに記録される情報のことです。

Cookieには任意の文字列が記録でき、利用者を識別するためのID(セッションID)、属性に関する情報、最後にサイトを訪れた日時など、システムによってさまざまな情報をCookieに保管します。

Cookieには次のような制限があります。

  • 1つのCookieには最大4,096バイトのデータを記録できる
  • 1つのWebブラウザには最大300個のCookieを保存できる
  • 1つのWebサイトは、同じコンピュータに対し最大20個のCookieを発行できる

Cookieの仕組み

CookieはWebサーバがHTTPヘッダにセットすることにより発行され、以降、そのサーバへのアクセス時には毎回自動的にHTTPヘッダに付加されます。

次のように、Cookieを管理します。

サーバに要求

① まず利用者(クライアント)がWebサイトにアクセスします。

Cookieを生成し、返却

② 要求を受けたWebサーバはCookie(セッションIDなど)を生成し、HTTPヘッダに設定してクライアントに返却します。

セッションIDについてはこちら

クライアントにCookieを保存

③ Cookieを受信したクライアントは、その情報をブラウザに保管します。

CookieをHTTPヘッダに付与して送信

④ 以降、そのサーバへのアクセス時には毎回自動的にHTTPヘッダにCookieを付加します。

Cookieに設定する属性情報

Cookieには次の属性があり、WebサーバがCookieを発行する際に指定します。

これらの属性を適切に設定することで、Cookieの流出や不正利用を制限できるので、属性情報は適切に設定しましょう。

主な属性情報は次のとおりです。

項目名
(形式)
説明
Expires属性
(Expires=日時)
Cookieの有効期限
※有効期限の指定がない場合は、利用者がブラウザを閉じたら消滅する。
Domain属性
(Domain=ドメイン名)
Cookieを送信したいサーバのドメイン名を指定する。

【指定ありの場合】
指定されたドメインが含まれている場合、Cookieを送信する。(サブドメイン名やホスト名が異なる場合であってもドメインが含まれていれば、送信される)

【指定なしの場合】
Cookieを発行したサーバとの通信のみCookieを発行する。
※詳細は下記表を参照
Path属性
(Path=ディレクトリ名)
Cookieを送信するパスの名前を指定する。

【指定ありの場合】
指定されたディレクトリにアクセスする場合のみCookieを送信する。例えば、Path=/hoge/aaaを指定した場合、hoge/aaa配下のリソース(/hoge/aaa/index.html、/hoge/aaa/bbb/index.htmlなど)にアクセスした際にCookieが送信される。

【指定なしの場合】
Cookieを発行したページのディレクトリにアクセスする場合のみCookieを送信する。例えば、/hoge/index.html でCookieを発行した場合は、hoge配下のリソース(/hoge/index.html、/hoge/aaa/index.htmlなど)にアクセスした際にCookieが送信される。
Secure属性
(Secure)
HTTPSSSL/TLS)で通信している場合のみCookieを送信する。
(この属性を指定することで、盗聴によってCookieが盗まれるのを防ぐことが可能)
HttpOnly属性
(HttpOnly)
JavaScript経由(Document.cookieなど)でCookieが取得できないようにする。
(この属性を指定することで、クロスサイトスクリプティングによってCookieが盗まれるのを防ぐことができる)
SameSite属性
(SameSite=値)
Webサイト内のリンクを踏んで別のサイトに移動する際に、遷移先のサイトのCookieを送信するか否かを指定する。
指定できる値は、Strict, Lax, Noneのいずれか。
・Strict:GET/POSTのいずれの場合であっても、異なるサイト間ではCookieは送信されない
・Lax:GETの場合のみ異なるサイト間でもCookieが送信される
・None:どんな場合でもCookieを送信する
(StrictかLaxを指定することで、クロスサイトリクエストフォージェリによって不正な処理が実行されるのを防ぐ効果がある)

Domain属性は次の表のように、domain属性の値が設定されているか、設定されていないかで動きが変わります。

セキュリティ確保のため「.co.jp」「.com」などの指定は無効となり、指定がない場合と同じ扱いになります。

Cookieを発行した
サーバのドメイン
domain属性の値送信先ドメイン送信
example.com未指定example.com送信される
example.com未指定test.example.com送信されない
test.example.com未指定example.com送信されない
test.example.com未指定test.example.com送信される
-example.comexample.com送信される
-example.comtest.example.com送信される
-test.example.comexample.com送信されない
-test.example.comtest.example.com送信される

helpful

-セキュリティ
-