특정 엔드포인트가 보안필터를 거치지 않도록 설정
할 때 사용@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());