使用JWT身份验证和CSRF令牌实现Spring Boot无状态应用程序

8
我有一个使用JWT身份验证的Spring Boot应用程序,非常好用!但是我已经禁用了CSRF,使用了STATELESS策略:
        .csrf()
            .disable()
        .sessionManagement()
            .sessionCreationPolicy(SessionCreationPolicy.STATELESS)

这个Rest API是为SPA React应用程序设计的。我了解到当使用JWT令牌时,不需要设置csrf令牌。JWT是否像csrf保护一样起作用(HOW)?我认为这不是csrf保护。


你找到答案了吗?我也遇到了同样的问题,但没有解释。在Spring Security中,他们提到即使是无状态设置也不受定义保护。 - Ben
1个回答

8

CSRF攻击利用浏览器始终在请求所请求的服务器时包括cookie(包括会话ID)这一事实。因此,攻击者可以在执行恶意操作时冒充真正的用户。

如果您的端点是无状态的(也就是说,您没有使用cookie进行身份验证),那么您不需要CSRF保护。


1
只是补充一下——在使用单页应用时,用户的应用程序状态存储在客户端本地,而在使用旧式MVC时,用户状态存储在服务器上并需要通过网络进行往返以利用。由于网络通信组件,MVC需要额外的CSRF令牌以防止冒名顶替者劫持另一个用户的会话,而SPA本质上根本不需要它。 - MuffinMan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接