2016-05-13 82 views
1

我的應用程序有一個會話修復漏洞。爲了解決這個漏洞,我在登錄後更改會話ID。會話在ASP.NET中爲空

我在不同的文件夾主頁和交易網頁下面。

~/Master/Login.aspx:憑證驗證後,我設置

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

,並重定向到〜/碩士/ Home.aspx

~/Master/Home.aspx:在這個頁面,我檢查與Cookie會話值頁面加載事件的值。

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; 
    } 

如果仍然沒有按:但這裏的HttpContext.Current.Session["ASPFIXATION"]nullHttpContext.Current.Session.IsNewSessiontrue

+0

可以請你在這裏分享你的代碼。需要更多信息來指導你。 – CrazyDev

回答

0

要讀出值後重新分配值值,有時從會話讀取後清除值如果你的會話數據不是機密的,那麼你可以嘗試在查詢字符串中傳遞它,並在頁面重定向中檢索這個值。

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

它不起作用。我可以導航到Master文件夾中的許多頁面。但是,如果我導航到不同的文件夾,如交易,所有會話對象獲得空值 – Priya