1

我们的是一个网络应用程序。安全团队建议我们在每次授权升级时更改 cookie。

因此,我想在身份验证后更新客户端 cookie。我使用了以下代码:

  System.Web.HttpCookie cookie = Request.Cookies["ASP.NET_SessionId"];
  System.Web.HttpCookie dummyCookie = new System.Web.HttpCookie("SessionId");
  cookie.Value = dummyCookie.Value;
 Response.Cookies.Add(cookie);

问题是一旦 cookie 得到更新,用户就会再次被视为未经身份验证的用户。

提前致谢。

4

1 回答 1

1

我已经在我的项目中实现了如下所示的处理。

当用户浏览应用程序登录页面时。我正在使用页面加载中的以下代码删除会话cookie中的会话ID。

if(!IsPostBack)
{
            HttpContext.Current.Session.Clear();
            HttpContext.Current.Session.Abandon();
            HttpContext.Current.Session.RemoveAll();
            Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
}

上面的代码会清空会话 cookie 中的 sessionid。现在,当用户输入适当的凭据时,asp.net 将自动创建新的会话 ID,因此浏览器将在成功验证后获得新会话。如果用户输入了错误的凭据,那么使用上面的代码我将再次重置 sessionid,这样新的 sessionid 将在成功验证时自动生成。

在我的项目中实施上述实施后,安全工具不再显示会话固定问题。我希望这有帮助。

于 2019-04-12T19:28:18.443 回答