Spring安全会话管理会话固定保护不工作

Spring安全会话管理会话固定保护不工作,spring,spring-security,Spring,Spring Security,我正在使用Spring3.1安全性。下面是我的spring-security.xml的一部分 <session-management session-fixation-protection="migrateSession"> <concurrency-control max-sessions="1" expired-url="/Login.html"/> </session-management> 这是因为您提供了会话固定保护=迁移会话。也就是说,来自Chr

我正在使用Spring3.1安全性。下面是我的spring-security.xml的一部分

<session-management session-fixation-protection="migrateSession">
<concurrency-control max-sessions="1" expired-url="/Login.html"/>
</session-management>

这是因为您提供了会话固定保护=迁移会话。也就是说,来自Chrome浏览器的会话被复制到Firefox浏览器的会话中。同时,它正在第二次登录,不应该。这可能是因为,若您提供了自己的UserPrincipal和UserPrincipalImpl类,则必须重写对象的equals和hashCode方法。请尝试使并发控制正常工作


另请参阅。

这是因为您提供了会话固定保护=迁移会话。也就是说,来自Chrome浏览器的会话被复制到Firefox浏览器的会话中。同时,它正在第二次登录,不应该。这可能是因为,若您提供了自己的UserPrincipal和UserPrincipalImpl类,则必须重写对象的equals和hashCode方法。请尝试使并发控制正常工作

另请参阅。

如果您在登录后如前所述复制了cookie,则这不是会话固定攻击,至少不是我们所防范的那种攻击。关键是,当您登录时,cookie会发生变化,因此其他人无法访问您的帐户。如果您想阻止某人修复已登录到其帐户的会话,那么这是另一回事,并且不容易通过这种方式进行保护

此外,您不需要设置此属性,因为它在默认情况下处于启用状态。只需使用一个元素。

如果您在登录后如您所说复制了cookie,那么这不是会话固定攻击,至少不是我们所保护的那种攻击。关键是,当您登录时,cookie会发生变化,因此其他人无法访问您的帐户。如果您想阻止某人修复已登录到其帐户的会话,那么这是另一回事,并且不容易通过这种方式进行保护



此外,您不需要设置此属性,因为它在默认情况下处于启用状态。只需使用一个元素。

Akash,您编写了UserPrincipal和UserPrincipalImpl类吗?不,我没有编写UserPrincipal和UserPrincipalImpl类。发布部分代码,以便我们可以帮助您正如我在下面所说的,您应该只有一个元素,但这是另一个问题。Akash,你写过UserPrincipal和UserPrincipalImpl类吗?没有,我没有写UserPrincipal和UserPrincipalImpl类。发布你的部分代码,这样我们可以帮助你。正如我在下面所说的,你应该只有一个元素,但那是另一个问题。嗨,谢谢你的回复。我正在阅读Peter Mularien的《Spring Security 3》。在这本书第6章第173页中,他模拟了会话固定攻击。我只是按照我在帖子中解释的那样做。但他说他的一个正在工作,但我自己的项目没有工作:再次阅读-将会话cookie值复制到剪贴板,然后登录。。。他在登录之前从Internet Explorer复制cookie。你说你登录了然后复制了cookie。登录时只需检查会话cookie是否发生更改。:D Luke您是对的。它正在改变。非常感谢你。但有没有办法防止登录后通过cookie复制。否。但这不是一个现实的攻击。登录时不应允许他人访问浏览器的cookie列表。您应该使用HTTPS来保护会话cookie,因为它是通过网络传输的。您好,感谢您的回复。我正在阅读Peter Mularien的《Spring Security 3》。在这本书第6章第173页中,他模拟了会话固定攻击。我只是按照我在帖子中解释的那样做。但他说他的一个正在工作,但我自己的项目没有工作:再次阅读-将会话cookie值复制到剪贴板,然后登录。。。他在登录之前从Internet Explorer复制cookie。你说你登录了然后复制了cookie。登录时只需检查会话cookie是否发生更改。:D Luke您是对的。它正在改变。非常感谢你。但有没有办法防止登录后通过cookie复制。否。但这不是一个现实的攻击。登录时不应允许他人访问浏览器的cookie列表。您应该使用HTTPS来保护通过网络传输的会话cookie。您好,感谢您的回复。我检查了您的线程,您在同一时间一个用户登录的并发控制方面有问题。但那不是我的问题。它对我有用。我的问题是会话固定保护,即使我设置了newSession,仍然存在同样的问题。可以复制过去的cookie并在另一个浏览器中工作:@Akash。不,这不是会话固定攻击。两个会话都不同,新会话迁移到旧会话。您登录了两次,应该可以只登录一次。所以问题来了
em与会话并发请检查我的完整spring配置文件代码。我还需要做些什么来防止这种情况。顺便说一句,我尝试从不同的浏览器使用相同的用户帐户登录。当第二次登录时,第一次就消失了。然后,只有第二次尝试处于活动状态。但当登录后复制过去的cookie时,同一用户可以同时在不同的浏览器中使用:您好,谢谢您的回复。我检查了您的线程,您在同一时间一个用户登录的并发控制方面有问题。但那不是我的问题。它对我有用。我的问题是会话固定保护,即使我设置了newSession,仍然存在同样的问题。可以复制过去的cookie并在另一个浏览器中工作:@Akash。不,这不是会话固定攻击。两个会话都不同,新会话迁移到旧会话。您登录了两次,应该可以只登录一次。所以问题在于会话的并发性,请检查我的完整spring配置文件代码。我还需要做些什么来防止这种情况。顺便说一句,我尝试从不同的浏览器使用相同的用户帐户登录。当第二次登录时,第一次就消失了。然后,只有第二次尝试处于活动状态。但当登录后复制过去的cookie时,同一用户可以同时在不同浏览器中:
<http auto-config="false" access-denied-page="/" disable-url-rewriting="true">

<intercept-url pattern="/test01*" access="ROLE_USER" requires-channel="https"/>
<intercept-url pattern="/test02*" access="ROLE_USER" requires-channel="https"/>

<form-login login-page="/Login.html"/>
<logout invalidate-session="true"
        logout-success-url="/"
        logout-url="/logout"/>


<session-management session-fixation-protection="migrateSession">        
    <concurrency-control max-sessions="1" expired-url="/Login.html"/>
</session-management>

</http>

<authentication-manager>
<authentication-provider>
<user-service>    
<user name="a" password="a" authorities="ROLE_USER" />
</user-service>
</authentication-provider>
</authentication-manager>