ソフトウェア 公開日 2026.04.24 更新日 2026.04.24

Cookieとは?セッションやログイン状態とどう関係するのか

Cookieとは何かを、セッションやログイン状態との関係から整理します。Cookieそのものの役割、サーバー側セッションとの違い、セッションCookieと永続Cookie、HttpOnly・Secure・SameSiteの基本まで初心者向けに解説します。

Cookie は、Web サーバーがブラウザに保存させ、次のリクエストでも送り返してもらうための小さなデータです。
HTTP は基本的にステートレスなので、そのままだと さっきログインした人今アクセスしてきた人 を結びつけにくいです。そこで Cookie が使われます。

ただし、ここで混ざりやすいのが Cookie = ログイン状態そのもの ではないことです。
実際には、次の3つを分けて考えると分かりやすくなります。

  • Cookie = ブラウザに保存され、毎回の通信で送られる仕組み
  • セッション = サーバー側この人はいま誰か どこまで認証済みか を覚えておく考え方
  • ログイン状態 = Cookieセッションを組み合わせて実現される状態

つまり、Cookieログイン状態を支える部品のひとつ です。
ここを分けて理解すると、JWT、localStorage、CSRF 対策、ログアウト挙動の話がかなり整理しやすくなります。

この記事では、2026年4月24日時点で MDN の Cookie / Set-Cookie / secure cookie configuration と、OWASP Session Management Cheat Sheet を確認しながら整理しています。

Cookieとは何か

Cookie は、サーバーがレスポンスで Set-Cookie を返し、ブラウザがそれを保存し、次回以降の同じサイト向けリクエストで Cookie ヘッダーとして送り返す仕組みです。

流れを短くするとこうです。

  1. ユーザーがログインフォームを送る
  2. サーバーが認証成功後に Cookie を設定する
  3. ブラウザがその Cookie を保存する
  4. 次のアクセス時にブラウザが Cookie を自動送信する
  5. サーバーがその値を見て 同じ利用者の続き だと判断する

ここで大事なのは、Cookie 自体に何を入れるかは実装次第だということです。
単なる識別子だけを入れることもあれば、設定値やトラッキング用の値を入れることもあります。

Web運用でまず押さえたいのは、Cookie の主な用途が次の3つだということです。

  • ログイン状態の維持
  • 表示設定や言語設定の保存
  • 閲覧や計測のための識別

このうち初心者が最初に混乱しやすいのが、ログイン状態の維持 です。

セッションとの関係

セッション は、複数回のリクエストを 同じ利用者の連続した利用 として扱うための考え方です。
サーバー側では、セッションIDにひもづけて、たとえば次のような情報を保持します。

  • ログイン済みかどうか
  • どのユーザーIDか
  • 権限は何か
  • 一時的な状態やCSRF用の情報

このときブラウザ側には、セッションIDそのもの を Cookie に入れて持たせる形がよく使われます。
つまり、ブラウザは詳細なログイン情報全部を覚えているのではなく、サーバー側のセッションを参照するための札 を持っているイメージです。

この構成だと、サーバー側セッションを無効化すればログアウトしやすいのが利点です。
一方で、Cookie を盗まれると、そのセッションになりすませるリスクが出るので、属性設定や HTTPS 前提の運用が大事になります。

ログイン状態はどう維持されるのか

ログイン状態は、ざっくり言うと次の流れで維持されます。

1. 認証する

ユーザーがIDとパスワード、あるいは MFA を含む認証を通過します。

2. サーバーがセッションを作る

サーバー側この利用者は認証済み という状態を保存します。

3. セッションIDをCookieでブラウザへ返す

ブラウザはその Cookie を保存します。

4. 次のリクエストでCookieが自動送信される

ブラウザが同じサイトにアクセスすると、その Cookie が付いて送られます。

5. サーバーがセッションを引き当てる

サーバーが Cookie の値を見て、対応するセッションを探し、ログイン済みとして扱います。

この流れで見ると、ログイン状態の本体はサーバー側セッションにあり、Cookie はその参照に使われることが多い、と整理できます。

Cookieとセッションを混同すると何が起きるか

混同すると、実務で次のような誤解が起きやすいです。

1. Cookieを消せば全部終わりだと思う

ブラウザ側の Cookie を消せば、そのブラウザからはセッションに戻れなくなります。
ただし、サーバー側にセッションが残っているなら、セッション自体が無効化された とは限りません。

2. セッションはブラウザだけが持っていると思う

よくある構成では、ブラウザが持つのはセッションIDだけで、本体の状態はサーバー側です。

3. Cookieに何を入れても同じだと思う

セッションIDだけを持たせる設計と、認証情報やトークンをそのまま持たせる設計では、漏えい時のリスクや失効しやすさが変わります。

セッションCookieと永続Cookieの違い

Cookie には、有効期限の持たせ方で大きく2種類あります。

種類 ざっくりした意味 よくある用途
セッションCookie ブラウザ終了までを前提にする Cookie ログイン状態の維持
永続Cookie ExpiresMax-Age を持つ Cookie 言語設定、再訪問設定、長めの保持

ただし、ブラウザのセッション復元機能があると、セッションCookie でも実感として長く残ることがあります。
そのため、ブラウザを閉じたら絶対に消える と決め打ちしないほうが安全です。

ログイン用途では、OWASP でも長期保存の永続Cookieより、非永続寄りの扱いを基本にする考え方が紹介されています。
特に管理画面や機密性の高いシステムでは、保持期間を長くしすぎない設計が大事です。

Cookie属性で最低限見ておきたいもの

ログインやセッションで Cookie を使うなら、少なくとも次の属性は押さえたいです。

HttpOnly

JavaScript から読み取りにくくする属性です。
XSS が起きたときの被害を減らす助けになります。

Secure

HTTPS 接続のときだけ送る属性です。
平文HTTPで送られないようにするため、ログイン用 Cookie ではほぼ必須です。

SameSite

クロスサイトのリクエストで Cookie をどう送るかを制御する属性です。
CSRF の被害を減らす助けになります。

Path / Domain

どのパス・どのドメインに対して送るかを絞る属性です。
広くしすぎると、不要な場所にも Cookie が送られやすくなります。

要するに、Cookie は 保存するかどうか だけでなく、どこから見えるか いつ送られるか まで含めて設計する必要があります。

Cookieだけでログインを理解しようとしないほうがいい理由

Cookie は重要ですが、ログイン設計ではそれだけ見ても足りません。
実際には次の観点も一緒に見ます。

  • サーバー側でセッションをどう保存しているか
  • ログアウト時に失効できるか
  • 権限変更時にセッションIDを更新しているか
  • CSRF 対策が入っているか
  • XSS 前提で Cookie 属性が適切か

このあたりを丸ごと見ると、Cookie は認証の全体像の一部 だと分かります。

localStorageやJWTとの違いはどう見るか

ここはよく比較されるポイントです。

単純な Web アプリでは、サーバー側セッション + HttpOnly Cookie のほうが素直なことがあります。
理由は、サーバー側で失効しやすく、ブラウザJavaScriptから直接読みにくくしやすいからです。

一方で、API 中心の構成や分散構成では、JWT を使う場面もあります。
ただし JWT を使うかどこに保存するか は別問題です。localStorage に置くのか、Cookie に入れるのかでリスクの出方も変わります。

この比較を深く見たい場合は、AIにJWT認証を提案されたけど本当に必要?Cookieセッションで足りるケースと見直し基準 がつながります。

よくある誤解

1. Cookieは危ないから全部使わないほうがいい

危ないのは Cookie という仕組みそのもの というより、設定や運用が雑な状態です。
属性設定、HTTPS、セッション失効、XSS/CSRF対策まで含めて見る必要があります。

2. Cookieがあれば自動で安全にログイン管理できる

それだけでは足りません。
安全性は、セッション管理、再認証、失効設計、権限変更時の扱いまで含めて決まります。

3. ログイン状態はブラウザが全部覚えている

多くの構成では、ブラウザは セッションを参照するための値 を持っているだけです。

最初に押さえるべきか

最初は次の5つで十分です。

  1. Cookie はブラウザに保存されて送られる仕組み
  2. セッション はサーバー側で状態をひもづける考え方
  3. ログイン状態は Cookie とセッションの組み合わせで作られることが多い
  4. ログイン用途の Cookie では HttpOnly Secure SameSite が大事
  5. Cookie = ログインそのもの ではない

この5つが見えると、ログイン、ログアウト、CSRFJWT の話がかなり読みやすくなります。

まとめ

Cookie は、ブラウザに保存され、次のリクエストでも送られる仕組みです。
一方、セッション は、複数回のアクセスを同じ利用者として扱うためのサーバー側の考え方です。ログイン状態は、その2つを組み合わせて実現されることが多いです。

最初は次の理解で十分です。

  • Cookie = 状態を運ぶ仕組み
  • セッション = 状態を覚える仕組み
  • ログイン状態 = その組み合わせ

この切り分けができると、認証まわりの議論でかなり迷いにくくなります。

この記事と一緒に読みたい

  1. AIにJWT認証を提案されたけど本当に必要?Cookieセッションで足りるケースと見直し基準
  2. APIキーとは?OAuthと何が違うのか
  3. CSRF
  4. JWT
  5. MFA

参考リンク

あとで見返すならここで保存

読み終わったあとに残しておきたい記事は、お気に入りからまとめて辿れます。