728x90
회사에서 취약점 개선 개발을 진행하면서 아래의 이슈를 접하게 되었다.
"정의되지 않은 요청 파라미터에 대해서 유효성 검증 필요"
해당 수정 방안은 ObjectMapper Configuration 설정 방법 혹은 Jackson 설정 방법이 있는데
그 중 가장 간단한 방법인 Jackson 설정으로 변경해보려고 한다.
변경 방법
1. Application.yml
Jackson:
deserialization:
fail-on.unknown-properties : true
- JackSon.deserialization.fail-on.unknown-properties은 Json 역직렬화 시 객체에 정의되지 않은 속성이 들어올 경우
UnrecognizedPropertyException 예외를 발생 시키는 설정이다.
2. Application.yml 수정으로도 적용이 안될 경우
Application.yml에 설위와 같이 설정하면 보통 다 해결이 된다.
다만 내가 담당하던 서비스의 경우는 적용이 안되는 이슈가 있었고...
이에 따라 몇일간 삽질을 하다가 알게 된 사실이 있었다.
바로 @EnableWebMvc 어노테이션을 사용하게 될 경우 정상적으로 작동하지 않을 수 있다는 점이다.
2.1 @EnableWebMvc이 무슨 문제가 있어서 Jackson이 적용이 안되는거야?
- 우선 @EnableWebMvc란 Spring Boot의 자동 구성 기능을 비 활성화하고 개발자가 수동적으로 Spring MVC 설정을 정의할 수 있는 어노테이션이다.
- 해당 어노테이션의 경우 Spring Boot의 설정을 무시하게 되는데, 이때 Spring Boot 내에서 사용중인 Jackson 프로퍼티에 대해서 무시하게 되어 Application.yml에 설정을 하더라도 정상적으로 작동하지 않았던 것이다.
@ControllerAdvice
@EnableWebMvc
public class CustomExceptionHandler() {
...
}
위의 예시 코드처럼 내가 담당하던 서비스의 예외 처리를 관리하는 클래스에 @EnableWebMvc 어노테이션을 사용하고 있었는데
당연히 jackson 설정이 비활성화 되어 적용이 안되었던 것이다.
이에 따라, application.yml 설정을 하였는데도 안되는 경우라면 @EnableWebMvc 설정이 되어 있는지 확인해보길 바란다.
728x90
'Programing > Java & Spring' 카테고리의 다른 글
[JPA&QueryDSL] QueryDsl이란 무엇인가? (4) | 2024.11.24 |
---|---|
[Spring] QueryDsl 설정 및 Q파일 생성 안되는 이슈 해결(Gradle 8.x 이상 설정 방법) (0) | 2024.11.10 |
[MacOS] OpenJdk 17 -> temurin 17로 변경하기 (1) | 2024.10.06 |
[Spring] Utility Class에 대해서는 Static Method로 구성하는 것이 좋을까? (1) | 2024.09.11 |
[Spring] TimeZone에 대해 활용해보자 (0) | 2024.08.21 |