gpt4 book ai didi

spring - XStreamMarshaller 的漏洞警告

转载 作者:行者123 更新时间:2023-12-04 18:01:19 26 4
gpt4 key购买 nike

将 XStreamMarshaller 与 spring 批处理一起使用时,我收到以下消息:

Security framework of XStream not initialized, XStream is probably vulnerable.

第一次尝试:根据文档,我尝试重置所有权限,但我仍然收到相同的消息。此外,我在解析 XML 文件时没有安全错误……所以我认为这段代码是行不通的。这是一个代码示例:
XStreamMarshaller marshaller = new XStreamMarshaller();
marshaller.getXStream().addPermission(NoTypePermission.NONE);

第二次尝试:我也试过 setSupportedClasses方法,但它也不起作用(我仍然收到漏洞消息并且不支持的类仍然被正确解码):
XStreamMarshaller marshaller = new XStreamMarshaller();
marshaller.setSupportedClasses(FooBar.class);

如何使用 XStreamMarshaller 设置安全权限?

注:根据 this thread ,安全框架是在 1.4.7 中引入的,但它仍然不是强制性的....但是 XStream 1.5.0 将是强制性的!

使用的 XStream 版本:1.4.10

使用的 Spring Batch 版本:4.0.1

有关信息,我正在使用 Spring Boot(但我不确定它是否与此处相关)

最佳答案

“第一次尝试”的解决方案:

它不起作用的原因是 XStreamMarshaller 用 afterPropertiesSet 实例化了一个 xstream 对象。不检查是否已经创建,所以我们不能使用 getXStream()在@Bean 方法中。为了使这项工作,我们可以例如在将编码器注入(inject)另一个 bean 时设置安全配置:

@Configuration
public class JobSecurityConfig {

public JobSecurityConfig(XStreamMarshaller marshaller) {
XStream xstream = marshaller.getXStream();
XStream.setupDefaultSecurity(xstream);
xstream.allowTypes(new Class[]{Bar.class});
}

}

另一种解决方案:扩展 XSreamMarshaller

您也可以扩展 XStreamMarshaller并仅覆盖 customizeXStream()方法来设置安全配置。
    @Override
protected void customizeXStream(XStream xstream) {
XStream.setupDefaultSecurity(xstream);
xstream.allowTypes(new Class[]{Bar.class});
}

为什么“第二次尝试”不起作用:
setSupportedClasses仅用于编码!!.. StaxEventItemReader不关心支持的类!

关于spring - XStreamMarshaller 的漏洞警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49450397/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com