Quantcast
Channel: 初心者タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 21101

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

$
0
0

はじめに

質問されて答えることができなくて、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をサーバーに送信することでステートフルの状態を作れる

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


Viewing all articles
Browse latest Browse all 21101

Trending Articles