2017-02-10 166 views
-2

如何实现在Spring Security 3.2.Currently它在每个工作阶段。这一处理每个请求的CSRF是必须的要求CSRF令牌春季安全

请后,需要进行修改。

在securitycontext.xml

<http> 
    <csrf /> 
    </http> 

,并给出应用正在与令牌每节

+1

但是为什么?它不增加安全性并且杀死缓存并且退回按钮 –

+0

应用程序需要该功能。高度安全的应用程序 – Fedrik

+0

工作返回按钮也是一个需求。 –

回答

1

您可以通过提供自己的实现此接口的改变CsrfTokenRepository默认实现并对其进行配置,如:

<http> 
    <csrf token-repository-ref="myRequestCsrfTokenRepository"/> 
</http> 
<b:bean id="myRequestCsrfTokenRepository" 
     class="com.company.security.RequestCsrfTokenRepository"/> 

但是......虽然你写道这是必须要求,但你应该重新考虑一遍。我甚至建议尝试说服另一端,这种改变可能会给应用用户带来更多的安全性,但也会带来很多不便,有时会出现奇怪的行为,并且通常会降低可用性和用户体验。例如。见Different csrf token per request in Spring security

+1

我完全同意,每个请求都是过度杀毒,并且您将花费大量的时间(周)来尝试以不会干扰最终用户的方式工作。默认的实现将CSRF令牌存储在会话中,当您将其更改为每个请求时,基本上使其不可能具有多个选项卡! –

+0

谢谢你的答案。我尝试创建自定义存储库,但是我没有在执行过程中获得清晰的图片。我的实现不允许我登录自己。如果我们为每个请求创建新的令牌,我们如何比较令牌?可以吗?请帮忙。 – Fedrik

+0

安全团队试图访问使用相同的令牌。我的印象是,他们采取了响应令牌。我的坏。通过实施这一个令牌将用于请求..我得到它会实现感谢。 – Fedrik