Java 使用SnakeYAML从不受信任的源加载YAML文件时会发生什么情况?

Java 使用SnakeYAML从不受信任的源加载YAML文件时会发生什么情况?,java,yaml,snakeyaml,Java,Yaml,Snakeyaml,文件: 警告:使用从不可信来源接收的任何数据调用Yaml.load()是不安全的 是安全问题吗?恶意YAML文件可以做什么?SnakeYAML允许使用任何类加载器。创建类的实例时,它调用构造函数。它将在那里运行任何代码。如果你自己加载类-不用担心 我也在想这个问题,在文档中发现了以下内容: 请注意,如果要将对象限制为标准Java对象,如列表 或者你需要多长时间 上面引用的链接指向一个测试用例,其中YAML文档包含对Java对象的引用。如果没有SafeConstructor,yaml.load将调

文件:

警告:使用从不可信来源接收的任何数据调用
Yaml.load()
是不安全的


是安全问题吗?恶意YAML文件可以做什么?

SnakeYAML允许使用任何类加载器。创建类的实例时,它调用构造函数。它将在那里运行任何代码。如果你自己加载类-不用担心

我也在想这个问题,在文档中发现了以下内容:

请注意,如果要将对象限制为标准Java对象,如列表 或者你需要多长时间


上面引用的链接指向一个测试用例,其中YAML文档包含对Java对象的引用。如果没有
SafeConstructor
yaml.load
将调用对象的无参数构造函数,这对于类路径中的某些类来说可能是一件坏事。使用
SafeConstructor
,只有()会被调用。

它可能会运行恶意代码。@Brian所以YAML文件可能包含Java代码,这些代码将在解析时执行?你说的“自己加载类”是什么意思?
Yaml yaml = new Yaml(new SafeConstructor());