Asp.Net формирует атаку повторного воспроизведения аутентификации

Мы сталкиваемся со сценарием, когда пользователь выходит из системы, и предыдущий хороший файл cookie сеанса (включая скользящее временное окно) воспроизводится, и наш код переходит прямо на запрошенную страницу от имени пользователя. Мы не поддерживаем состояние сеанса на сервере. Это аутентификация форм Asp.Net.

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

Это лучший способ справиться с этим? Поскольку нам все равно придется взломать код, мы можем добавить в файл cookie IP-адреса клиентских запросов и другие данные. Но текущая подделка заключается в повторном использовании клиентской машины, а также сеанса.

Есть предположения?

заранее спасибо

Билле

Код Javascript, который проверяет неактивность -> выход из системы

$j(document).ready(function () {

            /******************************************************************
            Auto-logout after the user's session times out
            ******************************************************************/

            var timeOut = (_TIMEOUT - 5) * 60;
            var setTimeout = function () {
                $j(".session-timeout").stopTime().oneTime(timeOut + "s", function () {
                    $j(this).show();
                    $j(this).oneTime("300s", function () {
                        window.location = $j(this).find("a.logout").attr("href");
                    });
                });
            };
            $j(".session-timeout a.refresh-session").click(function () {
                NextGen.CHS.UtilitiesWebService.RefreshSession(
                    function () {
                        $j(".session-timeout").fadeOut();
                        setTimeout();
                    },
                    function () {
                    }
                );
            });

            setTimeout();
        });


person weidson    schedule 03.09.2013    source источник
comment
Когда пользователь выходит из системы, он просто выполняет обратную передачу на текущей странице или переходит на страницу выхода? По повторной атаке вы знаете, что злоумышленник с отдельной машины или, вы говорите, с той же машины, может это сделать?   -  person Brian Mains    schedule 03.09.2013
comment
Есть два способа. тайм-аут клиента, приводящий к вызову ajax, который делает сеанс недействительным. Регулярная обратная передача при нажатии кнопки выхода.   -  person weidson    schedule 03.09.2013
comment
Кроме того, атака исходит с той же машины (возможно, с подделкой IP/MAC). У нас есть пользователи, которые входят в систему, выходят из системы и оставляют машину другому пользователю.   -  person weidson    schedule 03.09.2013
comment
Вы можете рассмотреть возможность использования JavaScript для перенаправления на страницу выхода вместо использования AJAX через window.location='logout.aspx';.   -  person Brian Mains    schedule 03.09.2013
comment
Я отредактировал исходный вопрос с кодом javascript, который проверяет неактивную клиентскую сторону.   -  person weidson    schedule 04.09.2013


Ответы (1)


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

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

Вейдсон

person weidson    schedule 05.09.2013