如何将 Spring Security 的 CSRF 功能用于无状态端点?

Posted

技术标签:

【中文标题】如何将 Spring Security 的 CSRF 功能用于无状态端点?【英文标题】:How to use Spring Security's CSRF feature for stateless endpoints? 【发布时间】:2014-01-04 13:10:04 【问题描述】:

我正在使用带有无状态 Web 服务的 Spring Security。我想使用 Spring Security 3.2 中的 CSRF 功能。无状态网络应用可以做到这一点吗?

这是相关的 Java Config,因为我暂时不得不禁用 CSRF。

@Override
protected void configure(HttpSecurity http) throws Exception 
    http
            .sessionManagement()
                .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                .sessionFixation().none().and()
            .csrf().disable();

【问题讨论】:

您的网络服务是否完全可以在网络浏览器中使用? 是的。主要用于单页网页应用(AngularJS) 查看方法:blog.jdriven.com/2014/10/… 【参考方案1】:

如果您的服务真的是无状态的,那么 CSRF 保护可能根本没有意义。只要服务器不使用 cookie 来识别/验证用户,您的服务就不会受到 CSRF 攻击。

详细解释见http://sitr.us/2011/08/26/cookies-are-bad-for-you.html

【讨论】:

以上是关于如何将 Spring Security 的 CSRF 功能用于无状态端点?的主要内容,如果未能解决你的问题,请参考以下文章