Cookieとセッション
Cookie(クッキー)
私の認識
ウェブサーバーにアクセスしたときにやった内容覚えておくウェブブラウザ側の記憶機能。
Cookieとは
Cookieは、HTTPの仕様を拡張してWebアプリケーションとWebブラウザの間で情報を交換できるようにしたもの。
WebサーバーからWebブラウザへHTTPレスポンスのヘッダを利用して「名前=値」の組み合わせてできた情報(Cookie)が送られる。
Cookieとは、Webブラウザ(クライアント)に保存された情報
WebサーバーからCookieを受け取ったWebブラウザは、次回同じWebサーバーにアクセスする際、受け取ったCookieをそのままHTTPリクエスト・ヘッダに入れて送る。
Cookie情報をもとにクライアント側(Wevブラウザ)の状態を保つ
Cookieの問題点
Cookieは特定のツールを用いることで簡単に覗けてしまうので、セキュリティ上安全ではない!
そこで、より安全により多くの情報を保持するための方法として、考案されたのが「セッション」と呼ばれる仕組み
セッションの仕組み
1. ユーザがWebブラウザを使って、Webサーバにアクセスをする。
2. Webサーバ側はセッションIDを発行し、アクセスしてきたユーザと関連付ける。
3. 発行したセッションIDをアクセスしてきたWebブラウザのクッキーへ保存する。
4. 再び同じWebサーバにアクセスするときに、保存してあるクッキーを送信する。
5. Webサーバ側はクッキーを受取り、セッションIDを調べ、関連付けてあるユーザのデータを取り出す。ているセッションIDを比較して一致しているものがあったらユーザーがログイン済みと判断する。
ログインまでのフロー
1. ユーザーにIDやパスワードなどでログインを求める。(ログインしていない状態のユーザーはセッションIDを持っていない)
2. 認証が成功したらサーバーはセッションIDを作成。生成するセッションIDは推測しにくい様に長いランダムなものを使用。
3. セッションIDとユーザー情報を紐付ける為、生成したセッションIDとユーザーIDをペアにしたデータをRedisなどのデータベースに保存。
4. 生成したセッションIDをCookieに保存。
ポイント
- Cookieの中には情報は格納せず、セッションIDだけを格納することで盗まれても問題はなくなる。
- セッションIDを元に状態を復元するためのメモリは、Webサーバ上にあるから安全性も高い。
- Cookieに格納できる情報量の制限を気にしなくていい。
クッキーとセッションの違い
セッション
- データの保存先 :サーバ内
- データの保存容量:ほぼ制限なし(最大はディスク容量まで)
- データの保存形式:プログラムのデータ形式
-有効期限:固定(Webブラウザが閉じるまたは設定ファイルの時間まで)
- セキュリティ面:クッキーに比べ危険性は低い
- データの利用:格納したらすぐに使える
クッキー
- データの保存先:ユーザーのPC内(Webブラウザ毎)
- データの保存容量:制限あり(1アプリ:4096Byte*20)
- データの保存形式:文字列(テキストファイル)
-有効期限: 任意で設定
- セキュリティ面:危険性が高い
- データの利用:再リクエスト後から使える
.