Hello, World!!

むずかしいことはかけません

Cookieとセッションの違い

疑問

  • Cookieとセッションの違いって何?
  • セッションは何の役割??

Cookieとは

HTTPの使用を拡張してWebアプリケーションとWebブラウザの間で情報を交換できるようにしたものです。
f:id:eeko-amaryllis:20200428173648j:plain:w550

HTTPレスポンスのヘッダを利用して送られた情報は "Webブラウザ(クライアント)" に保存されたものです。
Cookieにどのような情報を含めるかはアプリケーションが自由に決めることができます。

しかし
Cookieにはセキュリティ上覗かれてはいけない情報が入っています。
なので 安全により多くの情報を保持するための方法として、考案されたのが セッションです。

ここでセッションIDというのがあります。(セッションIDのやりとりはCookieを用います)
番号自体に特別な意味はなく、Webサーバーにリクエストを発行したWebクライアントを識別するIDです。

例えば以下のような、サーバーが管理するセッション状態の場合

セッションID ユーザーID ログイン 商品 注文完了
326 田中 テレビ
327 佐藤

このようにセッションIDさえわかれば、それに追随する色々な情報が知ることができます。


WebブラウザとWebサーバーの流れを説明すると
f:id:eeko-amaryllis:20200428181418j:plain:w550
1. Webアプリケーションでログインした場合、最初のリクエストがWebサーバーに送信されセッションIDを発行します
2. 発行したセッションIDはCookieを用いてWebブラウザへ渡します

これ以降のリクエストがあった場合
3. Webブラウザ先ほど発行されたセッションIDを格納しているCookieWebサーバーへ送ります
4. Cookieを受け取ったWebサーバーは、その情報に含まれている「セッションID」を元にWebブラウザの状態を復元します(例:ロフイン状態が残ってる)

ポイント

  • CookieにセッションIDだけ保存していれば、セッションID(数字)が盗まれても大丈夫
  • セッションIDを元に状態を復元をするためのメモリは、Webサーバー上にあるので安全性が高い
  • Cookieに格納できる情報量の制限を気にしなくていい(確か20個だったような)
  • Cookieに情報そのものを格納するか、セッションIDだけを格納するかの違い


参考資料
Cookieとセッションをちゃんと理解する - Qiita
Cookieとセッションについてわかりやすく解説します! | ウマロのゲームブログ