2016-05-13 25 views
1

私のアプリケーションにはというセッション固定の脆弱性があります。この脆弱性を修正するために、ログイン後にセッションIDを変更しています。ASP.NETでセッションがnullになる

私は以下のウェブページを異なるフォルダのマスターとトランザクションに持っています。

~/Master/Login.aspx :資格情報が検証した後、私は

Response.Cookies["ASPFIXATION"].Value ="xyz"; 
Session["ASPFIXATION"] = "xyz" 

を設定していますし、/〜/マスターに

~/Master/Home.aspx Home.aspxをリダイレクト:このページでは、私はクッキーとセッション値をチェックしていますページのロード時の値。

string cookie_value = string.Empty; 
string session_value = string.Empty; 
if (Request.Cookies["ASPFIXATION"] != null) 
    cookie_value = Request.Cookies["ASPFIXATION"].Value; 
if (HttpContext.Current.Session["ASPFIXATION"] != null) 
    session_value = HttpContext.Current.Session["ASPFIXATION"].ToString(); 
if (cookie_value != g_SessionFix) 
{ 
    if (Request.Cookies["ASP.NET_SessionId"] != null) 
    { 
     Response.Cookies["ASP.NET_SessionId"].Value = null; 
     Response.Cookies["ASP.NET_SessionId"].Expires = DateTime.Now.AddDays(-1); 
    } 
    if (Request.Cookies["ASPFIXATION"] != null) 
    { 
     Response.Cookies["ASPFIXATION"].Value = null; 
     Response.Cookies["ASPFIXATION"].Expires = DateTime.Now.AddDays(-1); 
    } 
    Response.Redirect("~/Master/Login.aspx", false); 
} 

ここで、セッションには値があり、それが検証されます。

~/Transaction/Report.aspx:このページにリダイレクトして、このページの同じセッションとCookie値のロジックを確認する必要がある場合。

if (Request.Cookies["ASPFIXATION"] != null) 
    { 
     cookie_value = Request.Cookies["ASPFIXATION"].Value; 
     Request.Cookies["ASPFIXATION"].Value = cookie_value; 
    } 

    if (HttpContext.Current.Session["ASPFIXATION"] != null) 
    { 
     session_value = HttpContext.Current.Session["ASPFIXATION"].ToString(); 
     HttpContext.Current.Session["ASPFIXATION"] = session_value; 
    } 

それはまだdoesnの場合:しかし、ここでHttpContext.Current.Session["ASPFIXATION"]の値はnullHttpContext.Current.Session.IsNewSessionの値もtrue

+0

ここでコードを共有してください。あなたを導くためのより多くの情報が必要です。 – CrazyDev

答えて

0

時にはそれがセッションから読み取った後の値をクリアし、値を読んだ後に値を再割り当てするようにしてくださいですセッションデータが機密でない場合は、 のクエリ文字列とページリダイレクトでこの値を渡そうとすると、この値を取得することができます。

Response.Redirect("~/Master/Login.aspx?data=" + session_value +"); 
+0

動作しません。マスターフォルダ内の多くのページに移動できます。しかし、Transactionのような別のフォルダに移動している場合、すべてのセッションオブジェクトはnull値を取得します – Priya

関連する問題