我的应用程序有一个会话修复漏洞。为了解决这个漏洞,我在登录后更改会话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