Asp.net mvc 4 如何在注销后使http会话无效

Asp.net mvc 4 如何在注销后使http会话无效,asp.net-mvc-4,session,authentication,cookies,burp,Asp.net Mvc 4,Session,Authentication,Cookies,Burp,我正在asp.net mvc中创建一个web应用程序,它使用表单身份验证来验证用户。 我正在使用HTTP代理工具“burp”来捕获经过身份验证的用户身份验证的cookie。之后,我从应用程序中注销。现在,我使用捕获的经过身份验证的cookie向我的服务器发送请求,服务器将该请求视为经过身份验证的请求(即使该用户从我的浏览器注销)。 有人能告诉我我的注销代码哪里出错了吗 下面是我的应用程序注销代码 public virtual ActionResult LogOff() {

我正在asp.net mvc中创建一个web应用程序,它使用表单身份验证来验证用户。 我正在使用HTTP代理工具“burp”来捕获经过身份验证的用户身份验证的cookie。之后,我从应用程序中注销。现在,我使用捕获的经过身份验证的cookie向我的服务器发送请求,服务器将该请求视为经过身份验证的请求(即使该用户从我的浏览器注销)。 有人能告诉我我的注销代码哪里出错了吗

下面是我的应用程序注销代码

  public virtual ActionResult LogOff()
    {
        FormsAuthentication.SignOut();
        Session.Abandon();

        // clear authentication cookie
        HttpCookie cookie1 = new HttpCookie(FormsAuthentication.FormsCookieName, "");
        cookie1.Expires = DateTime.Now.AddYears(-1);
        Response.Cookies.Add(cookie1);

        // clear session cookie 
        HttpCookie cookie2 = new HttpCookie("ASP.NET_SessionId", "");
        cookie2.Expires = DateTime.Now.AddYears(-1);
        Response.Cookies.Add(cookie2);

        HttpCookie cookie3 = new HttpCookie("__RequestVerificationToken", "");
        cookie3.Expires = DateTime.Now.AddYears(-1);
        Response.Cookies.Add(cookie3);

        HttpCookie cookie4 = new HttpCookie(".ASPXAUTH", "");
        cookie4.Expires = DateTime.Now.AddYears(-1);
        Response.Cookies.Add(cookie4);


        return RedirectToAction(MVC.Account.Login());
    }
下面是burp工具的屏幕截图,用于发送经过验证的请求,并给出成功响应


经过大量搜索,我得到了一个结果,没有这样正确的方法使经过身份验证的cookie无效。经过身份验证的cookie“.ASPXAUTH”(身份验证cookie的默认名称)基本上只包含用户名、生成时间和过期详细信息。它并不能真正告诉用户是否真的通过了身份验证

如果用户注销,此cookie将从浏览器中删除,但如果此cookie保留在捕获的某个位置,则它仍将作为经过身份验证的请求


我发现的唯一解决方案是使用这个cookie添加一些额外的唯一数据,并将这些数据存储在服务器(可能是数据库)的某个位置,然后比较来自数据库的每个身份验证请求中的唯一数据。当用户注销时,清除数据库中的唯一数据,这将确保在用户注销后,如果通过某种方式捕获的经过身份验证的请求命中服务器,则不会在服务器上获得身份验证。

我看到
cookie3
cookie4
您将再次过期
cookie2
属性??您是否可以使用捕获的经过身份验证的cookie显示发送请求的代码当您执行此操作时,是否可以在设置cookie的位置发布代码:FormsAuthentication.SetAuthCookie(model.UserName,model.RememberMe)@我不是通过代码发送经过身份验证的请求。我用来捕获请求的HTTP代理工具“Burp”具有名为repeater的功能,我正在使用它发送请求。我已经在我的应用程序中添加了相同的屏幕截图question@GaneshTodkar这是我设置身份验证cookie FormsAuthentication.SetAuthCookie(用户名,true)的代码;