Cookie がハイジャックされたかどうかをシステムが検出する状況があります。2 つの異なるブラウザー間で Cookie のクローンを作成すると、システムはクローンであるブラウザーのセッション Cookie を強制終了して、元のセッションを保護することができます。
しかし、私には問題があります。同じセッションで複製されたブラウザーの新しいセッション ID 値を再生成するにはどうすればよいですか? 基本的に、元のセッション ID データに影響を与えることなく、クローンに元のセッション ID データを削除した新しいセッション ID を与えます。
これは現在私のクローンで起こっていることです:
- システムは、このセッションが別のフィンガープリントで開始されたことを検出したため、クローンまたはハイジャックされた Cookie です
- セッション データにアクセスできなくなり、以前のセッション データは session_write_close() でディスクに書き込まれ、その後 $_SESSION 変数は完全にクリアされます。
- ユーザー エージェント (ブラウザー) は、複製されたセッション Cookie を削除するように通知されます
私がやりたいのは、Cookie は削除されず、新しい別のセッション ID が割り当てられるため、現在のセッションを削除する代わりに、空の新しいセッションが作成されることです。
session_regenerate_id() は使用できません。これは、セッションを開始する必要があり、新しいセッションではなく前のセッションを開始し、以前の元のセッション データが失われ、以前のセッションからアクセスできなくなるためです。session_id() 関数で新しいセッション ID を割り当ててそれを使用することはできますが、PHP 自体が生成するものと同じくらい安全なセッション ID 値を生成するにはどうすればよいでしょうか?
基本的に私がやりたいことは、複製されたセッションを検出した場合でもセッションを開始したいが、元のセッションを維持したまま複製されたセッションのセッション ID を置き換えたいということです。