python - 解析不受信任代码的抽象语法树是否安全?

标签 python parsing abstract-syntax-tree

可以使用 ast 吗?模块以编程方式解析和修改不受信任的外部 Python 代码?

我只会解析源代码,从源代码中获取一些信息(文档字符串、函数定义,也许,我不知道)并将其留在那里,而不是编译或运行它。

最佳答案

如果您使用的是 ast.parse 函数,那么它应该是安全的。如文档所述,此功能将

Parse the source into an AST node. Equivalent to compile(source, filename, mode, ast.PyCF_ONLY_AST)

它简单地解析文件,即使它包含无效的 Python 代码。它不进行任何类型的评估。

如果你的目标是评估表达式,那么你可以使用 ast.literal_eval,它比内置的 eval 语句更安全

关于python - 解析不受信任代码的抽象语法树是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18948042/

相关文章:

parsing - 使 OCaml Arg.parse 函数接受以开头的匿名参数

swift - 将 swiftc AST 输出发送到 stderr 的替代方法

python - 给定 AST,是否有用于获取源代码的工作库?

java - 从 java 服务器页面中删除所有 HTML

python - Cython : return a <object>PyObject*, 会泄露吗?

python - Ruby 替代 Scrapy?

javascript - JavaScript中如何解析JSON取值

python - 价格不会显示在 html 解析中

python - Pandas 将数据帧转换为元组数组

jquery - xpath 查询没有获取任何信息 - python