32 python security abstract-syntax-tree
有没有已知的方法让ast.literal_eval(node_or_string)的评估实际上不安全?
如果是,是否可以使用补丁?
(我已经知道PyPy [沙盒],它可能更安全,但除非答案是肯定的,否则,我的需求很小,我不会走得那么远.)
mad*_*jar 59
该文件指出它是安全的,有相对的literal_eval的安全性没有任何错误是bug跟踪系统,所以你可能会假设它是安全的.
此外,根据源代码,literal_eval将字符串解析为python AST(源树),并且只有在它是文字时才返回.代码永远不会执行,只会被解析,因此没有理由存在安全风险.
>>> code = '()' * 1000000
>>> ast.literal_eval(code)
[1] 3061 segmentation fault (core dumped) python2
Run Code Online (Sandbox Code Playgroud)
或较小的文件可能会SIGSEGV在Python 2中崩溃。在某些情况下,它可能是可利用的。