gpt4 book ai didi

spring - 如何防止HTTP session 洪水攻击

转载 作者:行者123 更新时间:2023-12-02 05:04:27 25 4
gpt4 key购买 nike

洪水攻击:简而言之,黑客可以不断攻击服务器(没有 cookie)来强制 Java 容器不断创建新 session 。

我正在使用 Spring Security 来管理 session 。我意识到 jsessionid 在登录之前不断创建,这不是我想要的。

所以我做到了:

1) 在 Spring 安全配置中:

sessionManagement().sessionCreationPolicy(SessionCreationPolicy.NEVER)

2) 禁用 jsp 中的 session 创建。因为我使用的是apachetile,由于它使用动态包含,所以我必须在所有jsp片段中禁用 session 创建。这非常乏味。

<%@page session="false"%>

乍一看,这很好,但有一个场景我仍然创建了 session 。

假设在登录之前,我访问了一个只有通过身份验证后才能访问的url,Spring会将我重定向到登录页面。

在我被重定向之前,响应已经指示设置一个新的 cookie,并且已经创建了一个 session 。

我的问题:

1) session 洪水攻击是一个严重的问题吗?我真的应该照顾它吗?

2)有没有更好的方法来处理这个问题?有什么最佳实践吗?

3) 我的代码发生了什么?它实际上应该可以工作,我怀疑 cookie 是由 Spring 创建的,尽管我已经将其设置为 SessionCreationPolicy.NEVER 。我无法将其设置为Stateless,登录后我仍然需要 session 。

实际上,与DDOS相比,我更担心 session 攻击,我还在Spring中设置了.maximumSessions(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

How to stop Spring Security from creating a new session?

关于spring - 如何防止HTTP session 洪水攻击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46682563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com