jac*_*ekn 3 security spring httpsession
HttpSession session=request.getSession(true);我在www.someurl.com的控制器中注意到,会话ID在步骤2和步骤4中是不同的.看起来Spring Security创建了一个新会话,该会话现在附加到公共页面请求.为什么会发生这种情况,我是否可以强制Spring Security使用现有会话?
JB *_*zet 10
你的诊断错误了:
我在www.someurl.com的控制器中注意到,会话ID在步骤2和步骤4中是不同的.看起来Spring Security创建了一个新会话,该会话现在附加到公共页面请求.
这正是因为所有页面都使用相同的会话,当您返回第一个选项卡并刷新时,您仍然以管理员身份登录.给定浏览器的所有选项卡和框架共享给定webapp的相同会话.这就是它的工作原理.服务器不知道并关心浏览器选项卡.它获取附加到给定浏览器发送的所有请求的会话cookie,并使用此cookie来获取相应的会话.这实际上是件好事.如果没有它,每次打开一个已经过身份验证的新选项卡时,都必须再次进行身份验证.而你绝对不希望如此.
那么让我们解释一下你的场景中会发生什么:
编辑:看来我错了,Spring确实在登录后创建了一个新会话,以防止会话固定攻击.文档中提供了有关为什么这有用以及如何避免此行为的说明:
会话固定攻击是潜在的风险,恶意攻击者可以通过访问站点创建会话,然后说服其他用户使用相同的会话登录(通过向他们发送包含会话标识符作为参数的链接,例).Spring Security通过在用户登录时创建新会话来自动防止这种情况.如果您不需要此保护,或者它与其他一些要求冲突,您可以使用session-fixation-protection属性控制行为,有三种选择
migrateSession - 创建新会话并将现有会话属性复制到新会话.这是默认值.
none - 什么都不做.原始会话将保留.
newSession - 创建新的"干净"会话,而不复制现有的会话数据.
| 归档时间: |
|
| 查看次数: |
16434 次 |
| 最近记录: |