跳至主要內容

关闭 csrf 攻击防御

Jin大约 1 分钟

关闭 csrf 攻击防御

在 Spring Security 中,默认情况下启用了 CSRF(Cross-Site Request Forgery,跨站请求伪造)防护。这是一种常见的 Web 安全漏洞,攻击者通过伪造用户请求来执行恶意操作,通常通过在用户不知情的情况下向网站提交请求。Spring Security 默认启用 CSRF 防护,要求每个 POST 请求都携带 CSRF token。

1、默认登录页面

1.1、关闭前 HTML 源码

![image-20241122134828892](images/12-SpringSecurity 关闭 CSRF 攻击防御入门/image-20241122134828892.png)

从观察可知

<input name="_csrf" type="hidden" value="58Dd5HeYeD-veeKNksCnh0zOjnem1U2LcFlJwKS62WG5zCc53vC8ghT8SwmCG4bpoe2T4yn8o06f5nSmE2F-pJKP4QTb_EFd" />
        <button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>

1.2、关闭后 HTML 源码

![image-20241122135455513](images/12-SpringSecurity 关闭 CSRF 攻击防御入门/image-20241122135455513.png)

从源码可知,_csrf 隐藏输入框丢失

2、关闭 CSRF 攻击防御

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
//                开启授权保护
                .authorizeRequests(authorize -> authorize
                        .anyRequest()//对所有请求开启授权保护
                        .authenticated()//已认证的请求会被自动授权
                )
                .formLogin(withDefaults())//使用默认的表单授权方式
                .httpBasic(withDefaults())//使用基本授权方式
                .csrf(AbstractHttpConfigurer::disable)//关闭 csrf 攻击防御

        ;
        return http.build();
    }

3、源码参考

org.springframework.security.config.annotation.web.builders.HttpSecurity#csrf()

![image-20241122135319451](images/12-SpringSecurity 关闭 CSRF 攻击防御入门/image-20241122135319451.png)

贡献者: Jin