Sessionの使い方

セッションを利用すると、サーバ側に情報を保存させることができます。セッションはCookieの技術を利用して成り立っています。

セッションID

セッションを利用すると、セッションIDと呼ばれる値がCookieに保存されます。クライアントからサーバに再アクセスした際、サーバ側ではこのセッションIDを利用してセッション情報にアクセスします。

セッションIDの名前はデフォルトでPHPSESSIDです。PHPの設定ファイル(php.ini)で設定を変えることもできます。

; Name of the session (used as cookie name).
; http://php.net/session.name
session.name=PHPSESSID

セッションの利用

セッションの開始

session_start関数によりセッションは開始されます。

session_start();
$_SESSION['waku'] = 'XXXXX';

はじめてアクセスしたクライアントによってsession_startが実行されると、クライアント側ではセッションIDがCookieに保存されます。

サーバ側ではセッションファイルが生成されます。ファイル名がCookieでセッションIDに設定した値と同じになります。

セッションファイルが保存されるパスはPHPの設定ファイル(php.ini)で設定できます。

session.save_path="C:\xampp\tmp"

session_start関数を実行する前にsession_save_path関数で設定することもできます。

セッションIDの再生成

セッション固定攻撃に備えて認証後にセッションIDを再生成する必要があります。セッションIDの再生成は、session_regenerate_id関数で行います。

session_regenerate_id(true)

引数にtrueを設定すると古いセッションが削除されます。

この他にもセッションハイジャック対策として、SSLの暗号化通信以外はCookieを使えなくするなどの対策も必要かと思います。