我的應用程序有一個會話修復漏洞。爲了解決這個漏洞,我在登錄後更改會話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"]
值null
和HttpContext.Current.Session.IsNewSession
也true
可以請你在這裏分享你的代碼。需要更多信息來指導你。 – CrazyDev