セッションの固定を避けるために、私はすべての PHP ページの冒頭で次のコードを使用します。
session_set_cookie_params( 900, '/', $domain, 1, 1 );
session_start();
session_regenerate_id( true );
ただし、ページの更新が速すぎる場合、または複数の ajax リクエストの場合、セッション ID は無効になります。
この問題なしでセッション固定を回避する方法はありますか?
たとえば、5 分ごとにセッション ID のみを再生成する方法のサンプルを次に示します。
// Sets the session name to the one set above.
session_name($session_name);
// Start the PHP session
session_start();
// Set last regen session variable first time
if (!isset($_SESSION['last_regen'])) {
$_SESSION['last_regen'] = time();
}
// Set session regeneration time in seconds
$session_regen_time = 60*5;
// Only regenerate session id if last_regen is older than the given regen time.
if ($_SESSION['last_regen'] + $session_regen_time < time()){
$_SESSION['last_regen'] = time();
session_regenerate_id(true);
}