Cookieとは
Cookieは、Webサイトがブラウザへ保存させ、次回の要求で同じサイトへ送る小さなデータです。一般にCookie(クッキー)と読みます。
サーバーがHTTP応答のSet-Cookieでname-valueと適用範囲を渡し、ブラウザーは後のmatching要求へCookieヘッダーとして自動添付します。ログインセッション、言語、買い物かご、セキュリティトークンなどに使います。
Cookieは「Webページが読む小さなファイル」とだけ考えないでください。ブラウザーが送信条件を管理し、要求ごとに自動送信するHTTP状態の仕組みです。

Set-Cookieから次の要求まで
name-valueの意味はアプリケーションが決める
Cookie仕様は値の業務的意味を定めません。サーバーは言語のような設定値、またはランダムなセッション識別子を入れます。セッションの本体をサーバー側データベースに置けば、ブラウザーへ個人データを直接保存せずに済みます。
Cookieはブラウザー利用者から見て変更可能です。価格、権限、アカウントIDを入れても署名・サーバー検証なしに信頼しません。
DomainとPathは送信範囲を決める
Domainを省略したhost-only Cookieは、設定したホストだけへ送ります。Domainを指定すると条件を満たすサブドメインにも送れるため、必要以上に広げません。
PathはURLパスによる送信範囲を絞りますが、別パスから値を絶対に読めないセキュリティ境界とは考えません。同じホストのアプリケーション間分離には別ホストを使います。
セッションCookieと永続Cookie
Expires・Max-AgeがないCookieは一般にセッションCookieとしてブラウザーセッション終了まで扱われます。永続Cookieは期限まで再起動後も残せます。
ブラウザーは容量管理や利用者操作で期限前に削除できます。「30日保持」をサーバー側の唯一のデータ保存保証にしません。
三つのセキュリティ属性を組み合わせる
SecureはHTTPSなど安全チャネルの要求だけへ送らせます。HttpOnlyはdocument.cookieなどスクリプトAPIからのアクセスを制限し、XSSでセッション値を直接読むリスクを減らします。
SameSiteはサイト横断文脈での送信を制御し、CSRF対策の一層になります。Strict、Lax、Noneの用途を選び、NoneにはSecureが必要な現行ブラウザー条件を確認します。
same-originとsame-siteは同じではない
オリジンはスキーム・ホスト・ポートの組、サイト判定はregistrableドメインなどを基にします。異なるサブドメインはcross-originでもsame-siteになり得ます。
Cookieはポートで隔離されず、一つのホストの別ポートへも送信対象になり得ます。Webアプリケーションの境界をCookieの直感だけで設計しません。
当事者と第三者は文脈の話
アドレスbarで開いたサイトと同じサイトのCookieを当事者文脈、埋め込み広告やwidgetなど別サイトの要求で使うものを第三者・サイト横断文脈と呼びます。
ブラウザーの追跡保護は第三者Cookieをブロック・区画する方向にあります。ログイン連携や埋め込み機能はStorage Access APIなど対応方式を確認します。
削除は同じ適用範囲で上書きする
サーバーは同じ名前・Domain・Pathで過去時刻またはMax-Age 0を返して削除させます。PathやDomainが違う同名Cookieは別に残ります。
ログアウト時はブラウザーCookieを消すだけでなく、サーバー側セッションと更新トークンを無効化します。盗まれた複製は別端末に残るためです。
盗用と固定化を防ぐ
セッションIDは十分ランダムにし、ログイン・権限変更時に再生成します。URLへセッションIDを入れず、短い期限、アイドルタイムアウト、サーバー側 revocationを使います。
XSS、ネットワーク、マルウェア、ブラウザー拡張、ログからの漏えいを防ぎます。重要操作では再認証やトランザクション確認を加えます。
Cookieの安全性は値の小ささではなく、どのURL・通信・サイト文脈でブラウザーが自動送信し、盗まれた値をサーバー側でいつ失効できるかで決まります。
HTTP Cookieの送受信と属性の確認資料:RFC 6265「HTTP State Management Mechanism」