【问题标题】:Session gets null in ASP.NET会话在 ASP.NET 中为空
【发布时间】:2016-05-13 08:04:27
【问题描述】:

我的应用程序有一个会话固定漏洞。为了修复该漏洞,我在登录后更改了会话 ID。

我在不同的 Master 和 Transaction 文件夹中有以下网页。

~/Master/Login.aspx : 验证凭据后,我正在设置

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

并重定向到 ~/Master/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);
}

这里的 Session 有值并且是经过验证的。

~/Transaction/Report.aspx:如果我重定向到此页面并且必须在此页面加载中检查相同的会话和 cookie 值逻辑。但是这里HttpContext.Current.Session["ASPFIXATION"]的值是nullHttpContext.Current.Session.IsNewSession的值也是true

【问题讨论】:

  • 你能在这里分享你的代码吗?需要更多信息来指导您。

标签: c# asp.net session


【解决方案1】:

读取值后尝试重新分配值,有时它会在从会话中读取后清除值:

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

如果它仍然不适合您,那么您还有另一种选择, 如果您的会话数据不是机密的,请尝试在查询字符串中传递它,并在页面重定向时检索此值。

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

【讨论】:

  • 它不起作用。我可以导航到主文件夹中的许多页面。但是如果我导航到不同的文件夹,比如事务,所有的会话对象都会得到空值
猜你喜欢
  • 2012-05-24
  • 2011-01-10
  • 2018-09-21
  • 1970-01-01
  • 2014-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多