重用以前的会话asp.net mvc

时间:2014-04-09 11:42:14

标签: c# asp.net-mvc security session cookies

我正在使用ASP.net MVC 4构建的applicationI上运行一些安全检查。

我目前正在使用网络调试器在测试期间撰写非正式帖子。

我的应用程序强制执行一项策略,其中数据只能由添加数据的用户修改。

我使用的方法类似于检查当前用户ID

  if (item.AddedByUser != WebMatrix.WebData.WebSecurity.CurrentUserId)
            {
                throw new UnauthorizedException();
            }

但是,当我尝试复制先前成功的POST(使用较旧的'ASP.NET_SessionId')时,我发现 WebMatrix.WebData.WebSecurity.CurrentUserId 方法返回了用户的用户ID在上一个会话期间处于活动状态,而不是当前活动用户的userId。

这对我来说似乎是一个潜在的安全漏洞。

有谁知道这是怎么发生的?

修改

我正在调用Sessioon.Abandon()方法并清除ASP.NET_SessionId cookie作为我的LogOff方法的一部分,如下所示

    public virtual ActionResult LogOff()
    {


        WebSecurity.Logout();

        Session.Abandon();

        Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
        Response.Cookies.Add(new HttpCookie(".ASPXAUTH", ""));
        Response.Cookies.Add(new HttpCookie("__RequestVerificationToken", ""));

            return RedirectToAction("Index", "Home");


    }

但是,如果以前的sessionid作为POST的一部分传递,则会话似乎仍然是“可重用的”

0 个答案:

没有答案