sessionとcookieは何が違うんじゃい!
ログイン機能とか作るときにsessionを使うけど、cookieじゃ駄目なんですか?
正直今までよくわからずに使っていたので調べてみる。
ちょっと調べてみると以下のような違いがあるらしい。
1 | 2 |
---|---|
cookie | Webサーバーが発行してブラウザが保持するキーと値 |
session | Webサーバー側で保持するキーと値 |
ふむ。sessionだとWebサーバー側に情報を保存してブラウザには情報を保持しないってことかな。
それじゃあsessionでサーバー上に情報を保存させたとして、再度サーバーにリクエストを送ったときサーバー上に保存した情報が自分のものだとどうやって証明するんだろう…
sessionはcookieありきのもの
そもそもsessionというのはユーザーによる一連の動作(例えばサイトにログインして買い物かごに商品を入れる・購入・ログアウトをするまで)のことを表すらしい。
sessionを開始するとセッションIDが発行されて、それがブラウザ上に保存される。
このセッションIDをもってサーバー上にセッションで保存した情報が自分のものだと証明することができるようだ。
そしてこのセッションIDをブラウザに保存する一番メジャーなのがcookieを使うこと。
cookieではなくsessionを使おう!っと思っても実はcookieも使われていたということか。
cookieでログイン機能を作ってはいけないのか?
ログイン機能を作るときに、cookieを使うとログインIDやパスワードをサーバーにリクエストを送信するたびに送ることになる。
これはセキュリティ上よろしくないためsessionを使うべき。
しかし、sessionを使ってもcookieに保存したセッションIDがリクエストを送るたびに送信されているわけで、セッションIDが盗まれたら同じことでは?と思えてしまう。
IDやパスワードをそのまま送信するよりはマシということだろうか…