0

少しバグのある CodeIgniter セッション ライブラリを、独自のネイティブ セッション実装に置き換えました。

どちらも同じように動作し、一定期間後にセッション ID を変更し、両方とも同じ問題を抱えています。この質問のために、セッションが毎分再生成されるとしましょう。

ユーザーがページを表示して 1 分間待機すると、次のページ要求でセッション ID が再生成されます。ただし、ユーザーのリクエストがタイムアウトしたり、ページを「2 回更新」したりすると、問題が発生します。ブラウザは新しい Cookie を受信しないため、次のリクエストで新しいセッションが開始されます。そのため、ID が再生成された時点でユーザーが更新を押し、立て続けにもう一度更新を押すと、セッションが失われます。

セッションの固定化を防ぐためにセッション ID を変更することをお勧めしますが、この問題を回避する方法はありますか? 明らかに、ID が再生成される時間を長くすると、これが発生する可能性が制限されますが、それでも発生する可能性は高いようです。

ご協力いただきありがとうございます!

4

1 に答える 1

1
  1. DBに列「previous_session_ID」を追加します
  2. 現在のセッション ID を「previous_session_ID」に移動し、新しいセッション ID を生成して current_session_ID に保存します
  3. ユーザーがセッション ID を使用してページにアクセスしようとした場合 - 現在の ID と「previous_session_ID」を確認してください

問題は解決しました。ユーザーは「2 回更新」を実行してもページにアクセスできるようになりました。

于 2013-07-11T12:14:10.533 に答える