洪水攻击: 简而言之,黑客可以不断访问服务器(没有cookie)来强制Java容器继续创建新会话。
我正在使用Spring Security来管理会话。我意识到jsessionid
在登录前一直在创建,这不是我想要的。
所以我做了:
1)在Spring安全配置中:
sessionManagement().sessionCreationPolicy(SessionCreationPolicy.NEVER)
2)在jsp中禁用会话创建。因为我使用的是apache tile,因为它使用的是动态include,所以我必须在所有jsp片段中禁用会话创建。这非常乏味。
<%@page session="false"%>
乍一看,这很好,但有一种情况我仍然会创建会话。
让我们说在登录之前,我访问了一个只有经过身份验证才能访问的网址,Spring会将我重定向到登录页面。
在重定向之前,响应已经指示设置一个新的cookie,即已创建的会话。
我的问题:
1)会话泛滥攻击是一个严重的问题吗?我应该真的照顾它吗?
2)有没有更好的方法来处理这个问题?任何最佳做法?
3)我的代码怎么了?它应该实际工作,我怀疑cookie是由Spring创建的,虽然我已经将它设置为SessionCreationPolicy.NEVER
。我无法将其设置为Stateless
,登录后仍需要会话。
我更关心会话攻击实际上与DDOS相比,我还在Spring中设置.maximumSessions(1)
以防止多次登录。但上述问题在登录前发生。请帮忙。感谢。
答案 0 :(得分:2)
您的观点看起来是有效的,如果不处理,它可能是一个严重的问题。我发现这个话题已经存在一个未解决的问题。但是有一种可以控制这种行为的工作。
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