可以使用 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/