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

时间:2013-09-09 17:22:54

标签: java yaml snakeyaml

SnakeYAML文档says

  

警告:使用从不受信任的来源收到的任何数据来呼叫Yaml.load()是不安全的!

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

2 个答案:

答案 0 :(得分:3)

我也想知道这一点,并在文档中找到以下内容:

  

注意是否要将对象限制为标准Java对象(如List)   或者您需要to use SafeConstructor

Yaml yaml = new Yaml(new SafeConstructor());

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

答案 1 :(得分:0)

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