[PHP-users 17602]Re: session_regenerate_id()の挙動について

Reiji Matsumoto matsumoto @ spline.oc.to
2003年 8月 30日 (土) 22:15:24 JST


Matsumoto @ Spです。

> session_regenerate_id()使うといいんじゃない?
私も同じような事を言っていました…。

追試してみましたが結果は同じです。
セッションファイルは残りますし、内容も保持されています。
元々これで完璧にセッションハイジャックを防げるわけでも無い
ですが、やっぱりよくないですねぇ…。

環境
php 4.3.3
Apache/1.3.27
Red Hat Linux 8.0 3.2-7

以下は php 4.3.3以前にsession_regenerate_id()と同等の
機能を実現するために作った関数です。
こっちはうまくいくようです。

function session_switching()
{
  $QQ = serialize($_SESSION);
  session_destroy();
  session_id(md5(uniqid(rand(),1)));
  session_start();
  $_SESSION = unserialize($QQ);
}

>#session_regenerate_id()ってそもそも何の目的で作られたんだろうか。。?

基本的にはセッションハイジャック対策であり、特に非SSL環境から
SSL環境に移行する際にセッション変数を継続して利用しているサイ
トが、レガシーシステムを生かしながらセキュアなセッション管理
を行うためにあるのだと思います。
その意味では/tmpの中にファイルが残っていても、スニファリングに
対する有用性には影響しませんので、まったく無意味では無いですね。



PHP-users メーリングリストの案内