Используя кнопку "Назад" браузера после того, как SignOut () предоставляет доступ к защищенной странице (ASP.NET MVC)

У меня есть приложение MVC, которое использование [Авторизовывает] для защиты частных битов. Когда я выбираю SignOut () URL, он заключает контракт со мной, но если я поразил кнопку "Назад" в свой браузер, это переходит к защищенной странице и даже позволяет мне использовать форму. Действие происходит, и затем оно показывает, что я выписан. Проблема состоит в том, что это выполняет защищенное действие (вставка строки в мою базу данных). Затем я могу использовать кнопку "Назад" снова и переделать все это. Если я использую кнопку "Назад" после того, чтобы выходить из системы и поражаю обновление браузера, это действительно показывает, что я выхожусь из системы и отказываюсь от меня доступ к защищенной странице.

Я пропускаю что-то важное? Кажется, что это могла быть действительно большая проблема безопасности.

public ActionResult LogOff(string ReturnUrl)
{

    FormsAuth.SignOut();

    if (!String.IsNullOrEmpty(ReturnUrl))
    {
        return Redirect(ReturnUrl);
    }
    else
    {

    return RedirectToAction("Index", "Page");
    }
}
5
задан mark123 25 January 2010 в 17:35
поделиться

3 ответа

Я думаю, проблема в том, что браузер кэширует страницу. Поэтому он не перезагружает страницу после нажатия кнопки "Назад". Если вы укажете в заголовках, что страница не должна быть кэширована, то она должна быть перезагружена после нажатия кнопки "Назад". И тогда пользователю будет отказано в перезагрузке.

Однако в некоторых случаях заставить его работать может быть непросто. Смотрите это Учебное пособие по кэшированию для получения более подробной информации.

5
ответ дан 13 December 2019 в 22:07
поделиться

Вы используете любую информацию сеанса? Formsauth.signout () влияет только на новые экземпляры страницы. Когда вы вернулись, вы были уполномочены там (ранее). Отступ разрешен, если у вас нет проверки кода для cookie / Session / Authenticity запроса. Это даже обходит Global.Asax, потому что просмотра уже генерируется.

Возможно, вы захотите добавить заявление о убийстве сеанса или предоставить некоторые дополнительные проверки авторизации в ваших базовых классах, чтобы убедиться, что пользователь действительно уполномочен, где они есть, когда они есть.

В качестве альтернативы вы можете отключить кэширование страницы, которое следует сделать обратно кнопку справедливо бесполезной (она укажет страницу истеченную по умолчанию). Это создаст странность для пользователей, которые опираются на кнопку «Назад», но она поможет гарантировать безопасность страницы, потому что она заставит «перенаправить» страницы в первую очередь.

1
ответ дан 13 December 2019 в 22:07
поделиться

Очистка сеанса может помочь. вот мой способ выхода:

    public ActionResult Signout()
    {
        Session.Clear();
        FormsAuthentication.SignOut();
        return RedirectToAction("Index", "Home");
    }
3
ответ дан 13 December 2019 в 22:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: