前端如何获取后端生成的CSRF token?

问题描述 投票:0回答:1

我正在开发一个 Web 应用程序的后端 API(使用 Spring Boot)。 API 使用 JWT 令牌对用户进行身份验证。我有一个用于注册帐户的端点 (

POST /register
)。

由于它是POST方法,因此需要前端提供CSRF令牌,我还将CSRF令牌附加在每个响应的标头中。然而,当前端想要调用这个端点时,它需要先发送一个虚拟注册请求(这会失败),只是为了获取 CSRF 令牌。我的问题是:他们是否有更好的方法来获取 CSRF 令牌?我是否应该创建一个端点

GET /csrf
只是为了在注册之前获取令牌?

顺便说一句,由于我对网络安全性比较陌生,我想知道在每个响应中附加 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();
}
spring csrf
1个回答
0
投票

如果我们将 crsf 令牌存储在 cookie 中并将 HttpOnly 设置为 false,我担心它可能会给恶意用户提供获取 crsf 令牌以发起 crsf 攻击的机会。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.