Spring:以编程方式生成新的 csrf 令牌

Spring: Generate new csrf token programmatically

我正在尝试制作一个网络应用程序,它将 运行 在单个 HTML 页面上,允许用户通过 JavaScript 和 ajax 与服务器交互.我想通过在每个请求中包含一个 csrf 令牌来使我的请求免受 csrf 攻击。

因为我的 webapp 只会在单个页面上运行,所以我不能在视图中使用 ${_csrf.token}(或类似的东西)语法,因为视图将是 json对象。相反,我想要一个像“/security/csrf”这样的 url,returns 一个与用户会话关联的令牌。 (是的,这不完全是 restful 服务。)

我有什么方法可以生成 Spring 安全人员在验证登录时能够访问的 csrf 令牌吗?另外,这样使用csrf token有没有问题?

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

在您的第一个 html 响应中,将 csrf 标记包含在元标记中,如文档所述:http://docs.spring.io/spring-security/site/docs/current/reference/html/csrf.html#csrf-include-csrf-token-ajax

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