アプリ版:「スタンプのみでお礼する」機能のリリースについて

セッションIDについて

ASP.NETで開発しています。
セッションフィクセーション対策でログイン画面で初期表示のみセッションを削除しています。
「ログイン」ボタンを押して、Postbackされる時にセッションIDが再発行されます。
ここまでの流れはいいのですが、もう一度「ログイン」ボタンを押下すると
一回目の「ログイン」ボタン押下時に再発行したセッションIDが、二回目の「ログイン」ボタン
押下時にも再発行してしまいます。

私は一回目のPostback時にセッションIDが再発行されたら、
それ以降のPostback時は既存のセッションIDを使用する動きを予想していました。

なぜ二回目以降のPostback時にもセッションIDが再発行されてしまうのでしょうか?
ご存知の方がいましたら教えていただけないでしょうか。

A 回答 (1件)

session fixation対策ということはcookieモードですよね?


セッションオブジェクトに何も格納していない場合、ページ要求ごとにSessionIDが再発行されるようです。
http://msdn.microsoft.com/ja-jp/library/system.w …
--- ここから引用 ---
Cookie ベースのセッション状態を使用する場合、ASP.NET は Session オブジェクトが使用されるまでセッション データのストレージを割り当てません。その結果、セッション オブジェクトがアクセスされるまで、ページ要求ごとに新しいセッション ID が生成されます。アプリケーションがセッション全体に対する静的な ID を必要とする場合は、アプリケーションの Global.asax ファイル内に Session_Start メソッドを実装し、Session オブジェクト内にデータを格納してセッション ID を固定するか、アプリケーションの別の部分のコードを使用して、明示的に Session オブジェクトにデータを格納します。

アプリケーションが Cookie なしのセッション状態を使用する場合、セッション ID は最初のページ ビューで生成され、セッション全体で保持されます。
--- ここまで引用 ---

私も同様の対策を調べていて、別のサイトでこの件を見つけました。
http://d.hatena.ne.jp/iltc/20080603/1212481925
※無許諾リンク御免

参考URL:http://msdn.microsoft.com/ja-jp/library/system.w …
    • good
    • 0
この回答へのお礼

amikazさん

回答の方ありがとうございます。現象の理由理解できました。
参考URLも分かりやすかったです。

本当にありがとうございました。

お礼日時:2010/04/23 10:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!