В нашем веб-приложении, которое является MVC5, с Owin, когда мы выходим из системы, у нас есть этот код:
public ActionResult LogOut()
{
using (MiniProfiler.Current.Step("AccountController.LogOut"))
{
Session.Clear();
Session.Abandon();
AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie);
Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1));
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
return RedirectToDefault();
}
}
Startaup.Auth выглядит так:
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
CookieName = ".<cookiename>",
LoginPath = new PathString("/Account/LogOn")
});
Мы проверили, что после выхода файлы cookie на клиенте (в браузере) удаляются. Но затем мы получили оценку безопасности от третьей стороны, в которой говорилось:
"Когда пользователь выходит из веб-приложения, его сеанс должен быть аннулирован на стороне сервера и на стороне клиента. В приложении Workforce сервер не удаляет файлы cookie пользователя на стороне сервера, когда пользователь выходит из системы. После выхода пользователи по-прежнему могут использовать старые значения файлов cookie для доступа к внутренним страницам и информации. В среде с общим компьютером это может позволить неавторизованному пользователю получить доступ к внутренним страницам приложения и данным, используя предыдущий сеанс пользователя. пользователи выходят из приложения, сервер должен завершить сеанс пользователя на стороне клиента и на стороне сервера. Файлы cookie HTTP должны быть удалены для браузера пользователя, а сеанс и связанные с ним переменные сеанса на сервере должны быть удалены. Для получения дополнительной информации , см. раздел управления сессиями Памятки по аутентификации OWASP: https://www.owasp.org/index.php/Authentication_Cheat_Sheet"
В основном проблема заключается в том, что если файлы cookie авторизации копируются, почему пользователь вошел в систему, а затем вручную применяются после выхода, сайт принимает вход. Когда я попробовал этот трюк против своего банка, он не сработал. Итак, за этим отчетом есть некоторые достоинства.
Любая идея, как мы можем решить эту проблему?