跳到内容

unsafe-yaml-load (S506)

源自 flake8-bandit linter。

作用

检查对 yaml.load 函数的使用。

为什么这不好?

在不受信任的 YAML 文件上运行 yaml.load 函数是不安全的,因为 yaml.load 允许创建任意 Python 对象,这些对象随后可用于执行任意代码。

相反,考虑使用 yaml.safe_load,它允许创建简单的 Python 对象,如整数和列表,但禁止创建更复杂的对象,如函数和类。

示例

import yaml

yaml.load(untrusted_yaml)

建议改为

import yaml

yaml.safe_load(untrusted_yaml)

参考