Skip to content

MisterRuby/spa-restapi-cors

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 

Repository files navigation

CSRF - Cross-Site Request Forgery

  • 사이트 간 요청 위조. 인증된 유저의 계정을 사용해 유저의 의도와는 무관하게 악의적인 변경 요청을 만들어 보내는 기법

CSRF 공격과 방지

image

  • 스프링 시큐리티의 경우 CSRF Filter 를 통해 검사
  • 페이지를 제공하는 서버와 데이터를 제공하는 서버가 다를 경우 CSRF 토큰을 포함하지 않는 요청을 허용해야함으로 이를 대체할 방어 전략이 필요하다.



CORS - Cross-Origin Resource Sharing

  • 교차 출처 리소스 공유. 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제

image

  • Preflight Request
    • 교차 출처 리소스 공유 사전 요청. 교차 출처 HTTP 요청 전에 서버 측에서 그 요청의 메서드와 헤더에 대해 인식하고 있는지 체크하기 위한 요청

Spring Security CORS Setting

@EnableWebSecurity
@Configuration
@RequiredArgsConstructor
public class SecurityConfig {

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) {
        // CORS 허용
	// 페이지를 제공하는 서버(Origin Server)와 데이터를 제공하는 서버(Other Server)가 다를 경우
	// Other Server 에서 CSRF 토큰을 제공할 수 없으므로 CSRF Filter 인증을 사용하지 않음
        http.csrf(AbstractHttpConfigurer::disable)
            .cors(corsConfigurer -> corsConfigurer.configurationSource(corsConfigurationSource()));

        // 페이지 권한 설정
        http.authorizeHttpRequests(authorizeHttpRequests -> authorizeHttpRequests.anyRequest().permitAll());

        return http.build();
    }

    @Bean
    public CorsConfigurationSource corsConfigurationSource() {
        CorsConfiguration configuration = new CorsConfiguration();
	// 지정한 출처의 애플리케이션의 요청을 허용
        configuration.addAllowedOriginPattern("http://localhost:5173");
        configuration.addAllowedHeader("*");
        configuration.addAllowedMethod("*");

        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", configuration);
        return source;
    }
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published