Spring:以编程方式生成新的csrf标记

时间:2015-04-18 22:03:31

标签: java spring spring-mvc spring-security csrf

我尝试制作一个可在单个HTML页面上运行的Web应用程序,该页面允许用户通过JavaScript和ajax与服务器进行交互。我希望通过在每个请求中包含一个csrf令牌来确保我的请求免受csrf攻击。

因为我的webapp只能在一个页面上运行,所以我不能在视图中使用$ {_ csrf.token}(或类似的东西)语法,因为视图将是一个json对象。相反,我想要一个类似" / security / csrf"的网址。返回与用户会话关联的令牌。 (是的,这绝对不是一项宁静的服务。)

我是否有办法生成一个csrf令牌,Spring Security在验证登录时能够访问该令牌?另外,以这种方式使用csrf令牌是否存在缺陷?

1 个答案:

答案 0 :(得分:1)

每个请求的令牌将终止缓存。每个会话的令牌同样安全。

在您的第一个HTML回复中,请在元标记中包含csrf标记,例如文档说:http://docs.spring.io/spring-security/site/docs/current/reference/html/csrf.html#csrf-include-csrf-token-ajax

您可以跨请求使用相同的令牌(在同一会话中)