HTTPとHTTPSを併用しログイン後の画面遷移はHTTPSしか許可しないサイトでの安全なセッション管理その2

「ログイン時にSecure属性付きのセッションCookieを再発行する実装の実現性」をASP.NETにおいて検証しました。

ASP.NET1.1

ASP.NET1.1でセッション破棄の処理を実装する場合には、Session.Abandonメソッドを使用します。ここでSession.Abandonを使用したセッションの再発行には、

  • Session.Abandonメソッドを使用してもCookieの削除は行われない
  • セッションIDは再利用される

という特性があります。セッションIDは再利用されるという特性が致命的なため、実装の実現性は今のところないと考えています。(いろいろ考えれば見つかってくるかもしれませんが、単純な方法では無理でしょう)

ASP.NET2.0

セッションID再発行の仕組みが用意されているので、少なくともJavaと同様なコードを実装することで、可能だと思います。(未検証)
sessionState Element (ASP.NET Settings Schema) | Microsoft Docs


ASP.NET1.1は、まだまだ現役で稼動しているフレームワークであるため、なんらかの解決手段を検討する必要があるでしょう。
ASP.NET1.1におけるHTTPとHTTPSを併用したセッション管理の仕組みとしては、認証Cookieの使用が推奨されています。セッション管理に使用するCookieと認証状態の管理に使用するCookieが独立して存在するため、認証CookieにSecure属性を設定することで、認証後のセッションデータを保護することが出来るという概念です。
この仕組みが安全に動作するならば、ログイン時にSecure属性付きのセッションCookieを再発行することが難しくても、サイトの安全性を守ることが可能となります。