1. 攻击场景

session fixation会话伪造攻击是一个蛮婉转的过程。

比如,当我要是使用session fixation攻击你的时候,首先访问这个网站,网站会创建一个会话,这时我可以把附有jsessionid的url发送给你。

http://unsafe/index.jsp;jsessionid=1pjztz08i2u4i
        

你使用这个网址访问网站,结果你和我就会公用同一个jsessionid了,结果就是在服务器中,我们两人使用的是同一个session。

这时我只要祈求你在session过期之前登陆系统,然后我就可以使用jsessionid直接进入你的后台了,然后可以使用你在系统中的授权做任何事情。

简单来说,我创建了一个session,然后把jsessionid发给你,你傻乎乎的就使用我的session进行了登陆,结果等于帮我的session进行了授权操作,结果就是我可以使用一开始创建的session进入系统做任何事情了。

与会话伪造的详细信息可以参考http://en.wikipedia.org/wiki/Session_fixation

2. 解决会话伪造

解决session fix的问题其实很简单,只要在用户登录成功之后,销毁用户的当前session,并重新生成一个session就可以了。

Spring Security默认就会启用session-fixation-protection,这会在登录时销毁用户的当前session,然后为用户创建一个新session,并将原有session中的所有属性都复制到新session中。

如果希望禁用session-fixation-protection,可以在http中将session-fixation-protection设置为none。

<http auto-config='true'>
<intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />
<intercept-url pattern="/**" access="ROLE_USER" />
<session-management session-fixation-protection="none"/>
</http>

session-fixation-protection的值共有三个可供选择,none,migrateSession和newSession。默认使用的是migrationSession,如同我们上面所讲的,它会将原有session中的属性都复制到新session中。上面我们也见到了使用none来禁用session-fixation功能的场景,最后剩下的newSession会在用户登录时生成新session,但不会复制任何原有属性。

spring security防御会话伪造session攻击的更多相关文章

  1. 使用Spring Security控制会话

    1.概述 在本文中,我们将说明Spring Security如何允许我们控制HTTP会话.此控件的范围从会话超时到启用并发会话和其他高级安全配置. 2.会话何时创建? 我们可以准确控制会话何时创建以及 ...

  2. Spring Security(13)——session管理

    1.1     检测session超时 1.2     concurrency-control 1.3     session 固定攻击保护 Spring Security通过http元素下的子元素s ...

  3. spring security 管理会话 多个用户不可以使用同一个账号登录系统

    多个用户不能使用同一个账号同时登陆系统. 1. 添加监听器 在web.xml中添加一个监听器,这个监听器会在session创建和销毁的时候通知Spring Security. <listener ...

  4. Spring Security 之集群Session配置

    1.   新建Maven项目 cluster-session 2.   pom.xml <project xmlns="http://maven.apache.org/POM/4.0. ...

  5. Spring Security 入门(1-7)Spring Security - Session管理

    参考链接:https://xueliang.org/article/detail/20170302232815082 session 管理 Spring Security 通过 http 元素下的子元 ...

  6. 结合Spring Security进行web应用会话安全管理

    在本文中,将为大家说明如何结合Spring Security 和Spring Session管理web应用的会话. 一.Spring Security创建使用session的方法 Spring Sec ...

  7. Spring Security教程之session管理(十一)

    1.1     检测session超时 1.2     concurrency-control 1.3     session 固定攻击保护 Spring Security通过http元素下的子元素s ...

  8. spring security控制session

    spring security控制session本文给你描述在spring security中如何控制http session.包括session超时.启用并发session以及其他高级安全配置. 创 ...

  9. Spring Security教程之session管理

    1.1     检测session超时 1.2     concurrency-control 1.3     session 固定攻击保护 Spring Security通过http元素下的子元素s ...

随机推荐

  1. 开发Portlet第二步:如何将Crystal静态Portlet转变成基于测试数据的动态Portlet?

    当基于Crystal的静态Portlet开发完成后,在与后台服务联调前,还需要将Portlet转换成基于测试数据的动态Portlet.具体步骤如下: 分步指南 复制Portlet项目,并修改相关的po ...

  2. 分享Kali Linux 2016.2第48周镜像文件

    分享Kali Linux 2016.2第48周镜像文件Kali Linux官方于11月27日发布Kali Linux 2016.2的第48周镜像.这次延续以往规律,仍然是11个镜像文件.默认的Gnom ...

  3. dubbox编译

    dubbox编译要在命令行 切记切记 设置JAVA_HOME 设置maven路径 命令编译dubbox 设置M2_HOME环境变量 设置idea M2_HOME dubbox 服务端 http://w ...

  4. [SDOI2016]部分题选做

    听说SDOI蛮简单的,但是SD蛮强的.. 之所以是选做,是因为自己某些知识水平还不到位,而且目前联赛在即,不好花时间去学sa啊之类的.. bzoj4513储能表&bzoj4514数字配对 已写 ...

  5. https://www.nginx.com/blog/introduction-to-microservices/

    https://www.nginx.com/blog/introduction-to-microservices/

  6. HDU5737 : Differencia

    注意到$b$不变,考虑用归并树来维护这个$b$序列,对于每个节点有序地维护$b$,同时在归并的时候预处理出每个元素在左右儿子里的排名. 在归并树上额外维护区间内$a\geq b$的个数以及赋值标记. ...

  7. kafka 集群安装与安装测试

    一.集群安装 1. Kafka下载:wget https://archive.apache.org/dist/kafka/0.8.1/kafka_2.9.2-0.8.1.tgz 解压 tar zxvf ...

  8. R语言常用命令

    data() 列出当前已安装包中所有可用的实例数据集 help("name") 查看帮助文档  summary()  

  9. UVa12298 Super Poker II(母函数 + FFT)

    题目 Source http://acm.hust.edu.cn/vjudge/problem/23590 Description I have a set of super poker cards, ...

  10. BZOJ4623 : Styx

    $g$是积性函数,可以通过分解质因数在$O(n\log n \log\log n)$的时间内求出. 对于$((A\times B)\times C)\times D$,可以转化为$D\times (C ...