Back-end/Spring

[Spring] Security CSRF 비활성화 (6.1 버전 이상)

shoney9254 2024. 2. 9. 22:43
반응형

0. 먼저 CSRF란?

CSRF(Cross-Site Request Forgery, 사이트 간 요청 위조)는 웹 보안 취약점 중 하나로, 사용자가 자신의 의지와는 무관하게 공격자가 조작한 요청을, 신뢰할 수 있는 사이트에 대해 보내도록 만드는 공격입니다. 이 공격은 사용자가 해당 사이트에 로그인한 상태에서 이루어지면, 사용자의 권한을 이용하여 악의적인 변경사항(예: 비밀번호 변경, 무단 게시물 작성 등)을 적용할 수 있습니다.

 

1. CSRF 비활성화 방법 (시큐리티 6.1버전 이상)

스프링 시큐리티 6버전부터는 보안 구성 방식에 몇 가지 변화가 있습니다. CSRF 보호를 비활성화하는 방법에도 변화가 있을 수 있으며, 새로운 방식을 적용해야 할 필요가 있습니다. 스프링 시큐리티 6버전에서 CSRF 보호를 비활성화하는 방식은 다음과 같습니다:

import org.springframework.context.annotation.Bean;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.Customizer;

@EnableWebSecurity
public class SecurityConfig {

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
            .csrf(csrf -> csrf.disable()) // CSRF 비활성화
            .authorizeHttpRequests(auth -> auth
                .anyRequest().permitAll()
            );

        return http.build();
    }
}

이 예제에서는 .csrf(csrf -> csrf.disable()) 구문을 사용하여 CSRF 보호를 비활성화하고 있습니다. 이는 스프링 시큐리티 6버전에서 도입된 새로운 구성 방식을 반영한 것으로, 보다 선언적이고 람다 기반의 구성 방식을 사용하여 보안 구성을 더욱 간결하고 읽기 쉽게 만듭니다.

스프링 시큐리티 6버전에서의 변경사항을 적용할 때는 공식 문서를 참조하는 것이 좋습니다. 스프링 프로젝트와 스프링 시큐리티 프로젝트의 문서는 항상 최신 기능과 변화된 사항을 상세히 설명하고 있으며, 보안 구성의 최선의 방법을 제시합니다.

반응형