セッションとCookieの7つの違いをざっくり解説

Web制作や開発をしているとよく使用する「Cookie」や「セッション」。

あなたはこの違い、説明できますでしょうか?

Cookieとセッションは、Webアプリケーションにおいて、ブラウザとサーバー間で情報を保存・管理するための技術ですが、異なる点がいくつかあります。

今回はCookieとセッションの違いについて紹介します。

違い1 : 利用目的

そもそも、Cookieとセッションはなぜ必要なのかということを知る必要があります。

Cookieの利用目的

Cookieはログイン状態の維持や、ユーザーの好みなどを記録します。

Cookieを使用することで、次回からログインなどの手続きをすることなくWebサービスを利用できたり、好みに応じた広告を表示させることができます。

セッションの利用目的

セッションはユーザーのアクション履歴や、処理状況などを管理することができます。

新規登録やログイン後、そのサイトのユーザーとして作業を行うことができるのはセッションがあるからなのです。

違い2 : 管理方法

CookieはJavaScriptなどの言語を使用して管理することができますが、セッションはサーバーサイドの言語(PHPなど)を使用して管理します。

なぜ言語による違いがあるのか。その違いは次の「保存場所」にあります。

違い3 : 保存場所

Cookieはブラウザに保存、セッションはサーバーに保存されます。

Cookieはブラウザに情報を保存する技術ですが、セッションはサーバーに保存されます。

サーバーに情報を保存するためにサーバーサイドの言語が必要となるのです。

違い4 : 保存期間

Cookieは長期的にブラウザ(端末)に保存することができますが、セッションはユーザーがサイトを閲覧していないときや離脱した時には切れます。

ログインするという行動自体はセッションを利用しますが、サイトから離脱してセッションが切れる前にCookieがログインの状態を保存し、次に訪れたときにはログイン状態が維持されます。

Webブラウザによって最長Cookie保持期間が異なるので、各ブラウザのドキュメントをよく読んで利用することをお勧めします。

Cookieとセッションが相互作用する事で私たちは手間なくWebサービスを利用できるのです。

違い5 : 情報の種類

Cookieはユーザーの情報を短期的・小さな情報単位で保存することができますが、セッションは複数の情報をまとめて管理することができます。

Cookieによって保持された情報は閲覧が可能であるため、持たせられる情報が少ないということもひとつの要因です。次の「セキュリティ」で説明しています。

違い6 : セキュリティ

Cookieはブラウザから直接アクセスされる可能性があるため、情報を暗号化するなどのセキュリティ対策が必要ですが、セッションはサーバー上で管理されるため、安全性が高いと言えます。

Cookieはクライアントサイドで保持されるためブラウザの検証モードで閲覧ができます。

よって、ログイン情報やクレジットカードなど、個人情報漏洩の恐れがあるものはサーバーサイドにてセッションで保持する必要があると言う事です。

違い7 : サイズ制限

Cookieはブラウザに保存するため、サイズが制限されますが、セッションはサーバーに保存するため、サイズ制限はありません。

Cookieが利用できる情報が小さいのはクライアントサイドに負荷がかかってしまうためと考えられます。情報が大きすぎるとPCやスマートフォンに大きな負荷がかかります。

まとめ

今回の話をまとめると

  1. 利用目的: Cookieはログイン状態の維持や、ユーザーの好みなどを記録できるが、セッションはユーザーのアクション履歴や、処理状況などを管理できる。
  2. 管理方法: CookieはJavaScriptなどの言語を使用して管理できるが、セッションはサーバーサイドの言語を使用して管理する。
  3. 保存場所: Cookieはブラウザに保存されるが、セッションはサーバーに保存される。
  4. 保存期間: Cookieは長期的にブラウザに保存できるが、セッションはユーザーがサイトを離脱すると切れる。
  5. 情報の種類: Cookieはユーザーの情報を短期的・小さな情報単位で保存できるが、セッションは複数の情報をまとめて管理できる。
  6. セキュリティ: Cookieはブラウザから直接アクセスされる可能性があるが、セッションはサーバー上で管理されるため、安全性が高いと言える。
  7. サイズ制限: Cookieはブラウザに保存するため、サイズが制限されるが、セッションはサーバーに保存するため、サイズ制限はない。

といった違いがあります。

両者を組み合わせて利用することで、ユーザーの情報を効率的に管理することができます。