セッションとクッキー

www.geocities.jp
以下、上記事からのまとめ

セッション管理:クライアント・サーバーの間で通信や情報を管理・保持すること
セッションID:コンピューターの相手を認識するための道具
session:クライアントとサーバーとの接続期間

セッションIDは、その接続は誰が行っているのか特定する物。
セッション変数は、その接続を行っている人物に関連する情報を保管するための変数だ。
セッション変数は、セッションIDと紐づけされるため、セッションIDがあれば、個々の接続の際に保管したデータを取り出す事ができる。

①クライアントから情報が送信される
②webサーバーがクライアントの情報をデータベースに保存する
③webサーバーがクライアントにセッションIDを渡す。
 このセッションIDによって、セッションIDと認証許可の情報が紐づけられているので、webサーバーはクライアントを判別することができる
④クライアントはサーバーから与えられたセッションIDを保持する。
 セッションIDをブラウザに覚えさせる方法
  (1).クッキー(cookie)を使う。→つまり、CookieとはWEBサーバーが発行し、ブラウザが保持するキーと値。
    Cookieはブラウザに保存され、セッションはWEBサーバーに保存されるという点が重要。
  (2).URLの後ろのセッションIDをつける。
⑤クライアントはサーバーから与えられたセッションIDを使い、サーバーが現在の接続を識別できるようにする。

・セッションIDは、クライアントに覚えさせるクッキー値なのだ。
1回目の接続の際、クライアントが接続要求を行う。
サーバーはセッションIDを発行し、それをクッキー値としてクライアントへHTMLデータと共にセッションIDを送り、ブラウザに覚えさせる。
そして2回目以降、クライアントが接続要求を行う際に、前回の接続でサーバーから送られたセッションIDを送る。
サーバーは、クライアントから送られたセッションIDを見てどの接続かを判断し、接続応答でHTMLデータをクライアントへ送る際に再び、セッションIDをクッキー値としてブラウザに覚えさせる。

セッションハイジャックとは
セッションIDがあれば、ログイン後の画面を簡単に見れてしまうのだ。
クライアントからサーバーにセッションIDを送信する際に、盗まれないようにしなくてはならない。
セッションハイジャックを防ぐ方法として、クライアントとサーバーの間はSSL通信(通信データの暗号化)を行う方法がある。
それ以外にも方法がある。 1回きりのセッションIDを使う事だ。→session_regenerate_id();
接続を行う度に、セッションIDを変更しておけば、例え、セッションIDが盗聴されたとしても、盗聴される危険性が減る。