[스프링시큐리티] 정적 자원 관리

Welcome to Seoyun Dev Log·2024년 12월 16일
0

보안

목록 보기
9/18

정적 자원 관리

  • 스프링시큐리티에서RequestMatcher인스턴스를등록하여무시해야할요청을지정할수있다
  • 주로 정적자원(이미지,CSS,JavaScript파일 등)에 대한 요청이나 특정 엔드포인트가 보안필터를 거치지 않도록 설정할 때 사용

사용 방법

@Bean
public WebSecurityCustomizer webSecurityCustomizer() { 

  return (webSecurity) -> {
  webSecurity
    .ignoring()
    .requestMatchers(PathRequest.toStaticResources()
    .atCommonLocations()); 
   };

}

enum으로 정의되어있다.

📌 Ignoring 보다 permitAll 권장
이전 스프링시큐리티 버전에는 모든 요청마다 세션을 확인해야 해서 성능 저하가 있었지만
스프링 시큐리티 6 부터는 권한 부여 규칙에서 필요한 경우를 제외하고는 세션을 확인하지 않는다.

지연로딩으로 성능 문제가 해결되었기 때문에 모든 요청에 대해서 permitAll을 사용할 것을 권장하며 정적 자원에 대한 요청일지라도 안전한 헤더를 작성할 수 있어 더 안전하다.
스프링시큐리티 보안필터를 거치지 않는 경우 XSS 인젝션 공격에 취약할 수 있다하지만 permitAll로 필터를 거치는 경우 보안적인 측면에서 안전할 수 있다

http
.authorizeHttpRequests(auth -> auth
//filter를 거쳐야한다
.requestMatchers("/css/**", "/images/**", "/js/**", "/webjars/**", "/favicon.*", "/*/icon-*").permitAll() 
//filter를 거치지않는다
.requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll() 
.anyRequest().authenticated());
profile
하루 일지 보단 행동 고찰 과정에 대한 개발 블로그

0개의 댓글

관련 채용 정보