php で session_regenerate_id(true) でセッションが切れる問題 3

わざわざセキュリティリスクを上げるプログラムを書くとかどうかしてると思うけど。。

セッションハイジャックのために
session_regenerate_id(true)を書くと
リンクをダブルクリックしたときに高確率でセッションが切れるようになります。
たぶんセッションを保存するI/Oのあたりなんじゃないかなぁと思いますが、
さしあたってこれでは色々と支障をきたすので、
こちら側で session_regenerate_idのタイミングをコントロールしなければなりません。

でこんなかんじ。

//ログインするときexpireにtimeをいれてく
$_SESSION['expires'] = time();

//セッションのページを開くたびにこんなかんじ。
if ($_SESSION['expires'] < time() - 7) {
    session_regenerate_id(true);
    $_SESSION['expires'] = time();

}

わざわざこんなこと書かないといけないなんて・・
なので、セッション使うなら、
ハイジャック対策は別の方法でやるほうがいいのかもしれないですね。
やり方わかりませんが。

3 thoughts on “php で session_regenerate_id(true) でセッションが切れる問題

  1. Reply gomi 4月 24, 2012 7:31 AM

    顔になっているのは何ですか? 1;

  2. Reply admin 5月 29, 2012 5:00 PM

    >gomiさん
    コメントありがとうございます。
    なぜか顔になっていたのは数字の8です。
    ようはtime()関数での数値と若干ずれないとsession_regenerateをしませんよ ということになります。

Leave a Reply