Cookieとセッションの違い
疑問
- Cookieとセッションの違いって何?
- セッションは何の役割??
Cookieとは
HTTPの使用を拡張してWebアプリケーションとWebブラウザの間で情報を交換できるようにしたものです。
HTTPレスポンスのヘッダを利用して送られた情報は "Webブラウザ(クライアント)" に保存されたものです。
Cookieにどのような情報を含めるかはアプリケーションが自由に決めることができます。
しかし
Cookieにはセキュリティ上覗かれてはいけない情報が入っています。
なので 安全により多くの情報を保持するための方法として、考案されたのが セッションです。
ここでセッションIDというのがあります。(セッションIDのやりとりはCookieを用います)
番号自体に特別な意味はなく、Webサーバーにリクエストを発行したWebクライアントを識別するIDです。
例えば以下のような、サーバーが管理するセッション状態の場合
セッションID | ユーザーID | ログイン | 商品 | 注文完了 |
---|---|---|---|---|
326 | 田中 | ✅ | テレビ | |
327 | 佐藤 | ✅ |
このようにセッションIDさえわかれば、それに追随する色々な情報が知ることができます。
WebブラウザとWebサーバーの流れを説明すると
1. Webアプリケーションでログインした場合、最初のリクエストがWebサーバーに送信されセッションIDを発行します
2. 発行したセッションIDはCookieを用いてWebブラウザへ渡します
これ以降のリクエストがあった場合
3. Webブラウザは先ほど発行されたセッションIDを格納しているCookieをWebサーバーへ送ります
4. Cookieを受け取ったWebサーバーは、その情報に含まれている「セッションID」を元にWebブラウザの状態を復元します(例:ロフイン状態が残ってる)
ポイント
- CookieにセッションIDだけ保存していれば、セッションID(数字)が盗まれても大丈夫
- セッションIDを元に状態を復元をするためのメモリは、Webサーバー上にあるので安全性が高い
- Cookieに格納できる情報量の制限を気にしなくていい(確か20個だったような)
- Cookieに情報そのものを格納するか、セッションIDだけを格納するかの違い
参考資料
Cookieとセッションをちゃんと理解する - Qiita
Cookieとセッションについてわかりやすく解説します! | ウマロのゲームブログ