セッションIDの生成仕様を変更しました
ありえないような確率だとは思いますが、
セッションIDの生成時に、
現在有効なセッションIDが生成されて重複することは絶対にありませんが、
過去に有効だったセッションIDが再利用される可能性は絶対にないとは言えない仕様だったので、
過去分も含めてセッションIDの重複が絶対に発生しない仕様に修正しました。
現在有効なセッションIDはそのまま有効です。
元の仕様の問題は、
セッションIDが生成された後に別のブラウザで無効にされて、
IP変動後に別のユーザーが同じIPでセッションIDを生成した場合に、
過去に同一IPで使用されていたセッションIDと一致してしまった場合、
さらにIP変動が発生して、旧ユーザーがそのIPになり、
クッキーの残っているブラウザで接続した場合。
という状況下で、
別ユーザーのアカウントにログインできてしまう。
となりました。
まあ、ありえないレベルの条件及び確率ですが、絶対にないとは言えない条件でした。
新仕様では、
過去に有効だった現在無効分も含めて、
セッションIDの重複は絶対に発生しないので、
不正アクセス以外でセッション乗っ取りは絶対に発生しません。
IPアドレスが違うならセッションは無効ですので、
基本的には不正アクセスでセッションを乗っ取りをしようと思っても、不可能です。
セッションIDの生成時に、
現在有効なセッションIDが生成されて重複することは絶対にありませんが、
過去に有効だったセッションIDが再利用される可能性は絶対にないとは言えない仕様だったので、
過去分も含めてセッションIDの重複が絶対に発生しない仕様に修正しました。
現在有効なセッションIDはそのまま有効です。
元の仕様の問題は、
セッションIDが生成された後に別のブラウザで無効にされて、
IP変動後に別のユーザーが同じIPでセッションIDを生成した場合に、
過去に同一IPで使用されていたセッションIDと一致してしまった場合、
さらにIP変動が発生して、旧ユーザーがそのIPになり、
クッキーの残っているブラウザで接続した場合。
という状況下で、
別ユーザーのアカウントにログインできてしまう。
となりました。
まあ、ありえないレベルの条件及び確率ですが、絶対にないとは言えない条件でした。
新仕様では、
過去に有効だった現在無効分も含めて、
セッションIDの重複は絶対に発生しないので、
不正アクセス以外でセッション乗っ取りは絶対に発生しません。
IPアドレスが違うならセッションは無効ですので、
基本的には不正アクセスでセッションを乗っ取りをしようと思っても、不可能です。