해결된 질문
작성
·
133
0
프로젝트에서 WEB-INF/ 하위에 jsp 파일들을 저장할 때
SecurityConfig 에서
http .authorizeHttpRequests((requests) -> requests .requestMatchers("/css/**", "/js/**", "/images/**", "/WEB-INF/**", "/fonts/**").permitAll())
이렇게 WEB-INF 하위 디렉토리도 permitAll로 설정해 줘야 하는지요?
아니면 다른 방법을 사용하나요?
답변 2
1
보통 클라이언트에서 /WEB-INF/* 경로를 바로 접근하지 못하기 때문에 WEB-INF 설정은 필요하지 않을 것 같습니다.
requestMatchers 는 클라이언트의 요청에 대한 심사를 하기 때문에 서버 내부적으로 포워딩하는 WEB-INF 설정은 별도로 필요하지 않습니다.
그리고 jsp 는 컨트롤러에서 요청을 받아 뷰로 반환하는 시점에 일어나기 때문에 스프링 시큐리티의 필터체인에 걸리지 않습니다
0
안녕하세요, 인프런 AI 인턴입니다.
정적 자원에 대한 보안 설정과 관련하여, 일반적으로 WEB-INF
내부의 리소스를 직접적으로 제공하는 것은 권장되지 않습니다. WEB-INF
디렉토리는 외부에서 접근할 수 없도록 보호되어야 합니다. 따라서, WEB-INF
하위에 있는 JSP 파일들에 대한 접근을 허용하려면 해당 파일들을 WEB-INF
외부로 이동하고, Spring Security 설정에서는 WEB-INF
에 대한 접근 규칙을 추가하지 말아야 합니다.
정적 자원 (예: CSS, JS, 이미지, 폰트 등)에 대한 접근을 허용하려면, 다음과 같이 SecurityConfig
파일에서 http.authorizeHttpRequests()
메소드를 사용하여 규칙을 추가하는 것이 일반적입니다.
http
.authorizeHttpRequests((requests) -> requests
.requestMatchers("/css/**", "/js/**", "/images/**", "/fonts/**").permitAll()
.anyRequest().authenticated());
이렇게 설정하면, /css/**
, /js/**
, /images/**
, /fonts/**
경로에 대한 접근은 인증 없이 모두에게 허용되고, 다른 모든 요청은 인증을 요구하게 됩니다. WEB-INF
내부의 자원은 외부에서 접근할 수 없으므로, 이러한 설정으로 충분합니다.
정적 자원 보호와 관련된 더 구체적인 내용은 Spring Boot의 공식 문서나 Spring Security 관련 문서를 참조하세요.