我最近读到 YAML 并非“旨在处理恶意用户输入”,因为恶意 YAML 输入“可以创建目标 Rails 应用程序中定义的所有类的实例”。维基百科也解释说
YAML 允许使用特定于语言的标签,因此支持这些标签的解析器可以创建任意本地对象。任何允许执行复杂对象实例化的 YAML 解析器都可能引发注入攻击。
因此,使用某些 YAML 解析器解析不受信任的输入似乎是不安全的。
谁能解释如何在 Rails、Python 和 Perl 中安全地解析不受信任的 YAML 输入?是否有安全的 YAML 解析库,或者调用它们的方法来确保它们是安全的,即使输入来自不受信任的来源?