はじめに
インターネットを利用する上で度々目にするcookieは、WEBサイトを作成する上で非常に重要になる知識なのでここにまとめます
cookieとは
クッキーは、ウェブサイトがユーザーのPCやスマホに保存する小さなテキスト情報のことを指します。テキストにはユーザーがそのサイトで何をしたか、どんな情報を入力したかなどが書かれています。
例えば、ユーザーがインターネットでショッピングをして、いくつかの商品をカートに入れた後にそのままサイトを閉じたとします。数時間後にそのサイトを再開したとき、カートの中には前に入れた商品がまだ残っていました。これは保存しておいたクッキー(小さなテキスト)を読み取ることでカートの中身を再度出力し直した結果になります。
ただし、クッキーに保存できる情報には限りがあり、重要な情報(例えばパスワード)をクッキーに保存することは推奨されません。また、ユーザーのプライバシーを尊重するために、クッキーを使う前にユーザーから許可を得ることが必要な場合もあります。
cookieはどこに保存されるのか?
cookieはクライアント(ユーザーのブラウザ)の一部として、ユーザーのローカル環境に保存されます。具体的には、ブラウザがクッキーをファイルまたはメモリ内の特定の場所に保存します。
保存先:macOS Google Chromeの場合
/Users/{ユーザー名}/Library/Application Support/Google/Chrome/Default/Cookies
cookieの見本
Name: myCookie
Value: 12345
Domain: example.com
Path: /
Expires: Sat, 01 Jan 2023 00:00:00 GMT
Secure: false
HttpOnly: true
SameSite: Strict
cookieはサーバーリクエストで自動送信される
ブラウザ(ローカル)に保存されたcookieは、ブラウザがサーバーにリクエストを送信する際にいくつかの例外を除けば
自動的に送信されます。
cookieが自動送信されない例外
- クッキーが有効期限切れ
クッキーに有効期限が設定されていて、期限が切れている場合、ブラウザはそのクッキーを送信しません。 - セキュア属性が設定されている
セキュア属性が設定されているクッキーは、HTTPSプロトコルを使用して通信する場合にのみ送信されます。HTTPプロトコルを使用する場合は、そのクッキーは送信されません。 - SameSite属性がStrictまたはLaxに設定されている
SameSite属性がStrictまたはLaxに設定されているクッキーは、クロスサイトリクエスト時に制限される場合があります。
クロスサイトリクエスト
クロスサイトリクエストは、異なるオリジン(ドメイン)間でのリクエストのことを指します。
例えば、ユーザーが信頼している銀行のウェブサイトを開いているときに、別のタブで攻撃者が作成した悪意のあるウェブサイトを開いてしまった場合、攻撃者のウェブサイトから銀行のウェブサイトに対して入力されたリクエストが送信される可能性があります。これによって、攻撃者はあなたのアカウント情報や機密データを取得することができ、これはクロスサイトリクエストフォージェリ(CSRF)」と呼ばれます。
cookieは紐づいたリクエスト先にのみ送信される
cookieは基本的に「cookieの保存を命令したサーバーと同じサーバー」にしか送信されません。cookieはリクエストと一緒にサーバーへ自動送信されますが、保存されているすべてのcookieを無差別に送信するわけではありません。リクエストが特定のドメインやパスに対して行われる場合、そのドメインやパスに関連付けられたクッキーだけを送信します。他のサイトやドメインに関連付けられたクッキーは、そのリクエストには含まれません。
ウェブサイトごとにクッキー作成が作成される
ウェブサイトは目的や機能に応じて、複数のクッキーを作成することがあります。たとえば、ログイン状態の管理やパーソナライズされた設定の保存には、複数のクッキーが使用されることがあります。
例えばユーザーが2つのサイトにアクセスした場合、それぞれのサイトは以下のようにクッキーを作成する可能性があります
- Amazon
ログイン状態を維持する、過去の注文や購入履歴 - youtube
ログイン状態を維持する、動画の再生状態や視聴履歴の管理
cookieは必ず作成されるわけではない
cookieは個人情報の漏洩につながる危険性もあることから、セキュリティ対策として以下のようにクッキーが制限されている可能性があります
-
ブラウザのクッキーの無効化
ユーザーがブラウザの設定でクッキーの受け入れを無効にしている場合、クッキーは作成されません -
プライバシーモードの使用
ブラウザがプライバシーモードで実行されている場合、クッキーは一時的に保存されず、セッション終了時に削除されることがあります。
まとめ
クッキーはウェブサイトがユーザーのデバイスに保存する小さなテキスト情報で、ウェブサイトのパーソナライズや状態の維持に使用されます。クッキーは自動的にサーバーリクエストと共に送信され、特定のドメインやパスに関連付けられます。また、ウェブサイトごとに複数のクッキーが作成されることがあります。クッキーの利用にはプライバシーとセキュリティの配慮が重要です。