跳到内容

suspicious-eval-usage (S307)

源自 flake8-bandit linter。

作用

检查内置函数 eval() 的使用情况。

为什么这不好?

eval() 函数是不安全的,因为它允许任意代码执行。

如果您需要从字符串评估表达式,请考虑使用 ast.literal_eval() 代替,如果表达式不是有效的 Python 字面量,它将引发异常。

预览中,此规则还将标记对 eval 的引用。

示例

x = eval(input("Enter a number: "))

建议改为

from ast import literal_eval

x = literal_eval(input("Enter a number: "))

参考