인프런 커뮤니티 질문&답변

13months님의 프로필 이미지

작성한 질문수

스프링 시큐리티 완전 정복 [6.x 개정판]

정적 자원 관리

JSP를 사용하는 경우 정적 자원 보호를 어떻게 설정해야 하나요?

해결된 질문

작성

·

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 관련 문서를 참조하세요.

13months님의 프로필 이미지

작성한 질문수

질문하기