Как аннулировать http-сессию после выхода из системы

Я создаю веб-приложение в asp.net mvc, которое использует аутентификацию форм для аутентификации пользователей. Я использую 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 для отправки аутентифицированного запроса, который дает успешный ответ.

Ниже приведен снимок экрана инструмента burp для отправки аутентифицированного запроса, который дает успешный ответ


person Abhishek    schedule 29.06.2015    source источник
comment
Я вижу, что для cookie3 и cookie4 у вас снова истекает срок действия cookie2 собственности??   -  person Guruprasad J Rao    schedule 29.06.2015
comment
Можете ли вы показать код для отправки запроса с использованием захваченного аутентифицированного файла cookie вашего сервера и когда вы выполняете это действие?   -  person Guruprasad J Rao    schedule 29.06.2015
comment
Можете ли вы опубликовать свой код, где вы устанавливаете файл cookie: FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);   -  person Ganesh Todkar    schedule 29.06.2015
comment
@GuruprasadRao Я не отправляю аутентифицированный запрос через код. Инструмент HTTP-прокси «Burp», который я использовал для захвата запроса, имеет функцию, называемую повторителем, я использую ее для отправки запроса. Я добавил снимок экрана для того же в своем вопросе   -  person Abhishek    schedule 29.06.2015
comment
@GaneshTodkar это мой код для установки файла cookie аутентификации FormsAuthentication.SetAuthCookie(username, true);   -  person Abhishek    schedule 29.06.2015


Ответы (1)


После долгих поисков я пришел к выводу, что такого правильного способа аннулировать аутентифицированный файл cookie не существует. Аутентифицированный файл cookie «.ASPXAUTH» (имя файла cookie аутентификации по умолчанию) в основном просто содержит имя пользователя, время его создания и сведения об истечении срока действия. На самом деле это не говорит, действительно ли пользователь аутентифицирован.

Если пользователь выходит из системы, этот файл cookie удаляется из браузера, но если этот файл cookie сохраняется где-то захваченным, он все равно будет служить аутентифицированным запросом.

Единственное решение, которое я нашел, состояло в том, чтобы добавить дополнительный бит уникальных данных с этим файлом cookie и сохранить эти данные где-то на сервере (вероятно, в базе данных) и сравнить эти уникальные данные в каждом запросе аутентификации из базы данных. И когда пользователь выходит из системы, очищает эти уникальные данные из базы данных, это гарантирует, что если аутентифицированный запрос, полученный каким-либо образом, попадет на сервер после выхода пользователя из системы, он не будет аутентифицирован на сервере.

person Abhishek    schedule 02.07.2015