セッション/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
参考資料
http://www.atmarkit.co.jp/fdotnet/bookpreview/learnaspnet_0701/learnaspnet_0701_01.htmlhttp://tukaenai-pg.cocolog-nifty.com/blog/2006/06/aspnet20_viewst_9d7e.html