개요
Marshaller, Unmarshaller 바인딩 기능을 제공하는 오픈소스인 Xstream을 이용해 StaxEventItemReader 코드를 작성하는데 아래와 같은 에러가 발생했습니다.
com.thoughtworks.xstream.security.ForbiddenClassException
원인
Xstream 1.4.18 버전은 역직렬화 진입 시점에 공격을 방지하기 위한 설정이 기본적으로 설정되어 있습니다.
You need to configure the security framework in XStream.
It is designed to prevent attacks to your deserialization entry point.
해결 방법
두 가지 해결 방법이 있습니다.
첫 번째는 아래와 같이 Xstream에 권한을 모두 허용하는 방식입니다.
final XStreamMarshaller xStreamMarshaller = new XStreamMarshaller();
final XStream stream = xStreamMarshaller.getXStream();
stream.alias("customer", Customer.class); // CannotResolveClassException 해결방안
stream.addPermission(AnyTypePermission.ANY); // ForbiddenClassException 해결방안
xStreamMarshaller.setAliases(aliases);
두 번째 해결 방법은 Xstream 버전을 1.4.18에서 1.4.16으로 낮추는 방법입니다. (개인적으로 추천하는 방식은 아닙니다.)
출처
https://www.inflearn.com/questions/646230
반응형
'[DEV] 기록' 카테고리의 다른 글
[javascript] common-lang3의 ObjectUtils.isEmpty()와 같은 코드를 작성하고 싶다면? (0) | 2023.08.31 |
---|---|
IT 분야 크리에이터 (14) | 2023.08.10 |
[Java] Long, Integer 값 비교는 ==이 아닌 equals로 해야하는 이유 (2) | 2023.06.23 |
[SpringBoot 2.6.X] QueryDSL Unable to load class 'com.mysema.codegen.model.Type' (0) | 2023.06.20 |
[ssh] WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! (0) | 2023.06.20 |