【ASP.NET】セッション(Session)

セッション/Session

 * ユーザーがブラウザーを開いている間だけ情報を維持する場合に使用
 * アプリケーション内で情報を受け渡ししたいという場合、Cookieセキュアに扱うことができる

ASP.NETのセッション管理機構について

http://support.microsoft.com/kb/899918/ja
より、ASP.NETのセッション ID は、次のいずれかの方法を管理される。

 [1] セッション ID をユーザーのブラウザに送信される Cookie の一部に含める
   →デフォルト

 [2] セッション ID を URL に埋め込まれる
   →例:「http://localhost/netIns/(1r3hm345osrrlq45ldvvjy55)/index.aspx」

   【利点】クッキー非対応のクライアントでもセッション機能を利用できる
   【欠点】セキュリティ上好ましくなく、セッションフィクセイション攻撃のターゲットとなる可能性になる

【結論】
 ※[2]は、以下のような欠点があげられるため、[1]が好ましいと思う。
  ただし、クッキーのセキュア属性をtrueにしておいた方がいい。
  (詳細は以下の参考文献を参照のこと)
http://www.chuu-information.com/security/gyou_ya_1.html

参考文献

[2]について
http://www.atmarkit.co.jp/fdotnet/dotnettips/189aspckless/aspckless.html
クッキーについて
http://blogs.yahoo.co.jp/dk521123/28439642.html

構文

Session("キー名 ") [=値]

サンプル

Session("Season") = "Spring"

Sessionの削除

 * セッション情報"Season"を削除:Session.Remove("Season")
 * すべてのセッション情報を削除:Session.RemoveAll()
 * セッションそのものを削除:Session.Abandon()

セッションフィクセーション対策

http://d.hatena.ne.jp/teracc/20100424
にあるように、ASP.NETでは、セッションを再生成する方法を提供していいが...
Me.Session.Abandon()
Me.Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", String.Empty))
セッションフィクセーションについては以下を参照
http://blogs.yahoo.co.jp/dk521123/25278676.html

参考文献

http://support.microsoft.com/kb/899918/ja
* 本当は以下の回避策にあるようにSessionIDManagerクラスを使った方がいい?
https://connect.microsoft.com/feedback/viewfeedback.aspx?FeedbackID=143361&siteid=210


関連記事

クッキー(Cookie

http://blogs.yahoo.co.jp/dk521123/28439642.html

ViewState

http://blogs.yahoo.co.jp/dk521123/27605311.html

セッション(Session)

http://blogs.yahoo.co.jp/dk521123/28490495.html

アプリケーション状態管理(Applicationオブジェクト)

http://blogs.yahoo.co.jp/dk521123/27476083.html

値の受け渡し

http://blogs.yahoo.co.jp/dk521123/28449946.html