Как предотвратить атаку 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