hrming
[Spring] MultipartFilter 설정 시, XSS Filter에 값이 null로 들어감 본문
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
'Spring' 카테고리의 다른 글
[Spring] bean 등록 방법 & @Configuration (1) | 2025.02.08 |
---|---|
[Spring] XSS Filter (1) | 2025.01.22 |
[Spring] @Transactional 어노테이션을 추가해도 트랜잭션이 적용되지 않는 경우 (2) | 2024.09.19 |
[Spring] Entity, DTO, VO (0) | 2024.07.08 |
[Spring] Spring Tag Library - <spring:message> 태그 (0) | 2024.06.05 |