セッションに管理されている情報の保存先を示すID=セッションIDは、session_regenerate_id()関数によって他のIDに置き換えることができます。その際、すでにセッション管理されている情報はそのまま引き継がれます。この関数を適切なタイミング……例えばページが変わるごとに呼び出すことにより、セッションIDを調べてアクセスしてくる攻撃に対する防御力を高めることができます。
なお、session_regenerate_id()関数を呼び出すタイミングは、print文などすべての画面出力の前である必要があります。またPHP5.1.0以降では、session_regenerate_id()関数の引数に「True」を指定すると古いセッション情報を削除できます。
<?php header("Content-type: text/html; charset=utf-8"); //セッションを開始 session_start(); //現在のセッションIDを取得 $oldsessid = session_id() . "<br>"; //セッションIDを変更 session_regenerate_id(); //新しいセッションIDを取得 $newsessid = session_id(True) . "<br>"; echo "【現在のセッションID】<br>"; echo $oldsessid . "<br><br>"; echo "【新しいセッションID】<br>"; echo $newsessid . "<br><br>"; ?>