У меня есть проект на C#, который имеет некоторые административные функции за экраном входа.Как предотвратить повторное использование авторизации после выхода из системы
Во время недавнего пентета у нас была возможность атаковать: если пользователь отправляет форму, выходит из системы, и сообщение формы повторяется (используя отрыжку или аналогичный инструмент), сервер все еще видит их в качестве входа в систему и отвечает правильно.
Полный контроллер «Admin» установлен в [Authorize]
с соответствующими установленными ролями. При выходе из системы я звоню
FormsService.SignOut();
Session.Clear();
Session.Abandon();
и перенаправляет пользователя на стартовую страницу.
Все, что я прочитал, указывает на то, что это должно быть все, что мне нужно для предотвращения этого. Тем не менее, я могу сделать следующее:
- Войдите в моей администрации области
- Выполните поиск (действие JSON POST, захваченный в отрыжки)
- результаты смотри поиск
- Выход
- Повторите JSON в POST отрыжки (который содержит печенье An «.ASPXAUTH»)
- См ответ сервера в отрыжки, который соответствует ранее ответ
Что я могу сделать, чтобы предотвратить это?
Во избежание повторных атак вы можете использовать аутентификацию с запросом-ответом с помощью nonce. –
'Session.Abandon' должен очистить сеанс на стороне сервера; это не должно работать. – SLaks
@SLaks: Итак, я прочитал. Тем не менее, это все еще происходит. Я сам провел тестирование. – Jeff