spring 前端如何获取后端生成的CSRF令牌?

jvidinwx  于 2023-10-15  发布在  Spring
关注(0)|答案(1)|浏览(142)

我正在开发Web应用程序的后端API(使用Sping Boot )。API使用JWT令牌对用户进行身份验证。我有一个用于注册帐户的端点(POST /register)。
因为它是一个POST方法,所以它需要来自前端的CSRF令牌,我还将CSRF令牌附加在每个响应的头中。然而,当前端想要调用这个端点时,它需要首先发送一个虚拟注册请求(这将失败),只是为了获得CSRF令牌。我的问题是:有没有更好的方法让他们获得CSRF代币?我应该创建一个端点GET /csrf只是为了在注册之前获取令牌吗?
顺便说一下,由于我对Web安全性相对较新,我想知道在每个响应中附加CSRF令牌是否是一个好的做法?这是我在Spring中的配置:

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        .csrf()
           .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
           .and()
        .sessionManagement()
           .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
           .and()
        .addFilter(new JwtAuthenticationFilter(authenticationManager()))
        .authorizeRequests()
        .antMatchers(HttpMethod.POST, "/register").permitAll()
        .anyRequest().authenticated();
}
okxuctiv

okxuctiv1#

如果我们将crsf令牌存储在cookie中,并将HttpOnly设置为false,我担心这会给恶意用户给予机会来获得crsf令牌以发动crsf攻击。

相关问题