Open1
クッキーとセッションIDについて🍪

🍪 CookieとセッションID
Cookieとは?🍪
- ブラウザが保持する「小さな情報の断片(key=value形式)」
- サーバーが
Set-Cookie
ヘッダーで色々送ってくる(sessionIDがほとんど)。そしてブラウザが保存しといてくれるもの - 次回以降、同じドメインにアクセスすると自動でサーバーに送られる
以下流れの説明
1. まずサーバー側がset-Cookieを送信
- サーバー側がクライアントに向けて送る
Set-Cookie: sessionId=abc123; Path=/; HttpOnly
2. クライアント側がそれを受け取る、送信
-
sessionId=abc123; Path=/; HttpOnly
をブラウザのCookieストアに保存される - ユーザーが同じドメインに再びアクセスすると,ブラウザが自動で保存したクッキーをリクエストヘッダーに追加して送信する。
GET /dashboard HTTP/1.1
Host: example.com
Cookie: sessionId=abc123
3. サーバー側がセッションIDを受け取り、ユーザー情報と紐付け
- サーバーは sessionId=abc123 を使って、セッションストレージを参照。
セッションストア["abc123"] = {
userId: 123,
isLoggedIn: true
}
🍪 Cookie属性 一覧表
属性名 | 用途・意味 | 例 | 備考 |
---|---|---|---|
name=value |
クッキーのキーと値を指定 | sessionId=abc123 |
必須。1つのクッキーの中核部分 |
Expires |
クッキーの有効期限を指定(日時形式) | Expires=Wed, 21 Oct 2025 07:28:00 GMT |
指定がないとセッションクッキーになる |
Max-Age |
有効期間を秒数で指定(Expires より優先) |
Max-Age=3600 |
0 で即削除。-1 は無効 |
Domain |
クッキーが送られる対象ドメインを指定 | Domain=.example.com |
. 付きでサブドメイン含む |
Path |
クッキーが送られる対象パスを指定 | Path=/account |
パスが一致しないと送られない |
Secure |
HTTPS通信時にのみクッキーを送信 | Secure |
HTTPS必須 |
HttpOnly |
JavaScriptの document.cookie からアクセス不可にする(XSS防止) |
HttpOnly |
セキュリティ強化に必須 |
SameSite |
外部サイトからの送信を制限(CSRF対策) |
SameSite=Lax / Strict / None
|
None の場合は Secure も必要 |
SameSite
属性のオプション比較表
📎 補足: 値 | 動作の内容 | 主な用途 | 注意点 |
---|---|---|---|
Strict |
外部サイトからのすべてのリクエストにクッキーを送信しない | 金融系・管理画面など厳密な認証が必要な場面 | ユーザビリティが落ちる(外部リンク経由などNG) |
Lax |
外部サイトからの GET リクエスト時のみクッキーが送信される | 多くの通常ログインに適用可能 |
POST はブロックされるためCSRF対策として有効 |
None |
すべてのリクエストでクッキーが送信される(外部サイト含む) | サードパーティ Cookie、API連携など |
Secure 属性が必須 |