hrming

[Spring] MultipartFilter 설정 시, XSS Filter에 값이 null로 들어감 본문

Spring

[Spring] MultipartFilter 설정 시, XSS Filter에 값이 null로 들어감

hrming 2025. 1. 23. 17:55

XSS Filter 설정이 되어있고, XSS Filter를 타는 것 까지 확인을 했는데 값이 null로 넘어오고 있었다.
확인해보니, MultipartFilter가 설정되어 있었고 이게 XSS Filter보다 우선순위가 높아서 발생한 문제였다.

[원인]
- MuiltipartFilter는 필터 체인에서 우선순위가 높음
- MultipartFilter는 요청을 MultipartHttpServletRequest로 변환하는 역할을 함
- 변환 후에는 요청 본문(request.getInputStream())을 이미 읽은 상태가 되므로, 이후 필터에서 요청 본문에 접근하면 비어있거나 정상적으로 처리되지 않을 수 있음
- XSS 필터는 요청 데이터를 원본 그대로 처리해야 하나, MultipartFilter가 먼저 실행되면 요청 본문은 이미 읽혀버려서 XSS 필터에서 더이상 데이터에 접근할 수 없게됨

[해결 방법]
- FilterRegistrationBean으로 필터 순서를 조정 (첫번째 블로그 참고)
- Spring Boot에서는 MultipartFilter 대신 StandardServletMultipartResolver를 사용하는 것을 권장


참고 및 출처:
https://sasca37.tistory.com/290#article-1-4--filterregistrationbean-%EB%B0%A9%EC%8B%9D

 

[Spring] Filter 순서 지정 (Order, @WebFilter, FilterRegistrationBean)

Filter 소개 Filter는 애플리케이션 레벨에서 로그인, 시큐리티, Jwt 등 구현을 하다 보면 Dispatcher Servlet에 도달하기 전 요청에서 토큰 검사 등 유효성 검사를 처리하기 위해 사용되며 Chaining 방식으

sasca37.tistory.com

 

https://binchoo.tistory.com/44

 

[스프링MVC] 파일 업로드 이야기 - multipart/form-data 요청 다루기

1. 멀티파트 요청하기 파일을 업로드하여 DB에 저장하는 기능을 스프링 MVC로 구현하고 있습니다. 이것을 구현하기에 앞서 충분히 이해해야 할 지식입니다. 클라이언트에서 유저의 파일을 업로드

binchoo.tistory.com

 


ChatGPT

Comments