[DEV] 기록

[Spring Batch] ForbiddenClassException

꾸준함. 2023. 7. 26. 18:00

개요

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://stackoverflow.com/questions/30812293/com-thoughtworks-xstream-security-forbiddenclassexception

 

com.thoughtworks.xstream.security.ForbiddenClassException

I came across this exception while updating xstream (1.4.8) lib to the latest version in one of our web applications. The exception was being thrown in a pojo from a dependent jar that was compiled...

stackoverflow.com

 

https://www.inflearn.com/questions/646230

 

Xstream 관련 ForbiddenClassException 또는 CannotResolveClassException 해결방법 - 인프런 | 질문 & 답변

XStream 버전이 올라가면서 보안 관련 문제로 실습이 제대로 안되는 문제가 있었습니다.간단하게 실습 자체만 하고 싶으신 분들은 XStream 모듈 버전을 낮추시면 됩니다.implementation 'com.thoughtworks.xstr

www.inflearn.com

 

반응형