Python 安全的使用 eval

# Python 安全的使用 eval

我们有时候,会看到有些人为了取巧的对表达式进行求值,使用 eval。虽然简单但是使用不可靠的外部代码,很不安全的。

所以在这里推荐一个 Python 抽象语法树 模块中的一个函数 ast.literal_eval 就可以 很安全的解决。

翻译的官方文档

ast.literal_eval(node_or_string)
安全计算表达式节点或包含Python字面值或容器显示的字符串。提供的字符串或节点只能由以下Python字面值结构组成:字符串,字节,数字,元组,列表,项,集,布尔值和None。

这可以用于安全地评估包含来自不可信来源的Python值的字符串,而不需要解析值自己。它不能够评估任意复杂的表达式,例如涉及运算符或索引。

在版本3.2中更改:现在允许字节和设置字面值。

PS

了解到这些 就可以愉快又安全的装逼了。。。。。。

发表评论