Как предотвратить атаку http-сеанса flood

Flood Атак: Короче говоря, хакер может продолжать бить сервер (без cookie), чтобы заставить контейнер Java продолжать создавать новый сеанс.

Я использую Spring Security для управления сеансом. Я понимаю jsessionid продолжайте создаваться до входа в систему, это не то, что я хочу.

так я и сделал:

1) в конфигурации безопасности Spring:

sessionManagement().sessionCreationPolicy(SessionCreationPolicy.NEVER)

2) отключить создание сеанса в jsp. Поскольку я использую плитку apache, из-за этого используется динамический включите, поэтому я должен отключить создание сеанса во всем фрагменте jsp. Это очень утомительно.

<%@page session="false"%>

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

скажем, перед входом в систему я посещаю url, который можно посетить только после аутентификации, Весна перенаправит меня на страницу входа.

прежде чем я перенаправлен, ответ уже инструктирует установить новый файл cookie, уже созданный сеанс.

мой Вопрос:

1) является ли сессия flood attack серьезной проблемой? Должен ли я действительно позаботиться об этом?

2) есть ли лучший способ справиться с этой проблемой? Лучшая практика?

3) Что случилось с моим код? Он должен работать на самом деле, я подозреваю, что cookie создан весной, хотя я уже установил его в SessionCreationPolicy.NEVER. Я не могу установить его в Stateless, мне все еще нужен сеанс после входа в систему.

Я больше обеспокоен сессионной атакой по сравнению с DDOS на самом деле, у меня также set .maximumSessions(1) весной для предотвращения множественного входа в систему. Но выше вопрос происходит перед логином. Пожалуйста помочь. Спасибо.

1 ответов


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

public class ApiSecurityConfig extends WebSecurityConfigurerAdapter {
        public HttpSessionRequestCache getHttpSessionRequestCache() {
            HttpSessionRequestCache httpSessionRequestCache = new HttpSessionRequestCache();
            httpSessionRequestCache.setCreateSessionAllowed(false);
            return httpSessionRequestCache;
        }

        @Override
        protected void configure(final HttpSecurity http) throws Exception {
            http.requestCache().requestCache(getHttpSessionRequestCache());
}

см. следующие ссылки для получения более подробной информации.

https://github.com/spring-projects/spring-security/issues/4242

как остановить Spring Security от создания нового сеанса?