2016-05-13 66 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