【发布时间】:2018-03-22 19:04:39
【问题描述】:
洪水攻击: 简而言之,黑客可以不断攻击服务器(没有 cookie)以强制 Java 容器不断创建新会话。
我正在使用 Spring Security 来管理会话。我意识到jsessionid 在登录之前一直被创建,这不是我想要的。
所以我做到了:
1) 在 Spring 安全配置中:
sessionManagement().sessionCreationPolicy(SessionCreationPolicy.NEVER)
2) 在 jsp 中禁用会话创建。因为我使用的是 apache tile,由于它使用的是动态包含,所以我必须在所有 jsp 片段中禁用会话创建。这很乏味。
<%@page session="false"%>
乍一看,这很好,但有一个场景我仍然创建了会话。
假设在登录之前,我访问了一个只有经过身份验证才能访问的 url,Spring 会将我重定向到登录页面。
在我被重定向之前,响应已经指示设置一个新的 cookie,一个会话已经创建。
我的问题:
1) 会话洪水攻击是一个严重的问题吗?我真的应该照顾它吗?
2) 有没有更好的方法来处理这个问题?有什么最佳做法吗?
3) 我的代码会怎样?它实际上应该可以工作,我怀疑 cookie 是由 Spring 创建的,尽管我已经将它设置为 SessionCreationPolicy.NEVER。我无法设置为Stateless,登录后我仍然需要会话。
其实相比DDOS我更关心会话攻击,我还在Spring中设置了.maximumSessions(1)来防止多次登录。但上述问题发生在登录之前。请帮忙。谢谢。
【问题讨论】:
-
我首先想到的可能是这样的控件:如果多个请求在短时间内从同一个 IP 地址到达(例如 10 秒内有 10 个请求),则阻止该请求
-
我同意@AngeloImmediate。如果您的目标是防止会话泛洪攻击,这种攻击是“一种”DDoS 攻击,请在较低级别采取措施来防止此类事情发生,而不是让您的应用程序服务器打扰它。通过较低级别,我的意思是使用防火墙。以下是使用
iptables执行此操作的方法:unix.stackexchange.com/questions/139285/…
标签: spring security session cookies spring-security