我使用的是Spring 3.1 Security。下面是我的"spring-security.xml“的一部分。
<session-management session-fixation-protection="migrateSession">
<concurrency-control max-sessions="1" expired-url="/Login.html"/>
</session-management>虽然我仍然设置session-fixation-protection="migrateSession"如果我使用"Chrome浏览器“登录,然后复制Cookie值并打开"Firefox浏览器”并转到登录页面,然后编辑cookie并从"Chrome浏览器“粘贴值,然后我看到我已经登录到我的应用程序中。这意味着“会话固定攻击”是可能的!
我的spring安全配置中遗漏了什么吗?
这只是我下面的cofig文件
<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>发布于 2012-05-17 22:37:22
如果您在登录后复制了cookie (如您所说),那么这就不是会话固定攻击(至少不是我们要防御的那种攻击)。关键是,当您登录时,cookie会发生更改,因此其他人无法访问您的帐户。如果你想阻止某人修复已经登录到他们的帐户的会话,那就是另一回事了,而且不是很容易通过这种方式保护的东西。
此外,您不应该需要设置此属性,因为它在默认情况下处于启用状态。并且只使用一个<session-management>元素。
发布于 2012-05-17 22:36:10
因为你提供了,session-fixation-protection="migrateSession"。也就是说,Chrome浏览器的会话被复制到Firefox浏览器的会话中。而且,它是第二次在同一时间登录,这是不应该的。这可能是因为,如果您提供了自己的UserPrincipal和UserPrincipalImpl类,则必须覆盖Object的equals()和hashCode()方法。试着让并发控制正常工作。
另请参阅my question。
https://stackoverflow.com/questions/10637497
复制相似问题