LoginSignup
0
0

More than 3 years have passed since last update.

cookie と sessionを自分なりにまとめてみた。

Last updated at Posted at 2020-05-19

はじめに

質問されて答えることができなくて、cookieやsessionよく聞くけど理解してないやん
ってなったので調べました。
初心者なので間違っていたら指摘ください。。
自分なりの文章で書いているので悪しからず

参考文献

【PHP超入門】Cookieとセッションについて

そもそもな話

まずHTTPについての確認が必要。

クライアントがリンクをクリックする(リクエスト)

サーバーがリクエストにあったページを飛ばす(レスポンス)

といったように通信される。
サーバーは、リンクをクリックされる以前のページの状態を覚えていないため、
リクエストを送りレスポンスを受け取ったら、その通信は終了してしまう。
webサイトにログインして、物をカートに入れて購入したいとしても、ページが遷移するたびに
通信が終了するため、カートに入れた人も購入した人も覚えてないってことですね。
そのため通販サイトのようなWEBサイトは作れない。

この以前の状態を覚えていないことをステートレスということを知りました。
state(状態)がless(無い)ってことですね。

では、ステートフルにするためにはどうしたらいいか。
といった話になり、その際にcookieとsessionが関わってきます。

cookieとsession

始めにcookieから

Cookieとは、Webサイトの提供者が、Webブラウザを通じて訪問者のコンピュータに一時的にデータを書き込んで保存させる仕組み。 IT用語辞典から抜粋

つまるとことcookieはクライアント側に保存されたデータ

ブラウザ全体で300個のcookieに対応していて、1つのドメインに20個のcookieを提供できるらしいですね(1つのcookieに4096byte)

これを利用すればブラウザにデータが入っているので大丈夫かと思ったけど、
クライアント側にデータを保存するので詳しい人とかだと改竄できるってことで、

この問題を解決するためにsessionが出てきます。

コンピュータネットワークでは、接続を確立してから切断するまでの一連の通信のこと。HTTPのサイトでは、セッションにIDを振ることで同一のセッションを管理することができる。また、一連のインタラクティブな操作(例えばログインしてからログアウトするまで)を指す場合もある。
ITトレンドから抜粋

このことから、割り振られたsession IDをcookieに格納すれば
サーバーにsession IDを送信することができる。

これなら、クライアント側でsession IDが改竄されたとしても肝心の中身はサーバーにあるため
安全な通信を行うことができることになる。

まとめ

cookie
・クライアント側に保存される
・データが改竄される可能性有

session
・サーバー側に保存される
・データ改竄の可能性低
・session IDをサーバーに送信することでステートフルの状態を作れる

とのことでした。
よく見聞きする単語ですが、調べてみるとなるほどと唸るばかりでした。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0