python自动化之eval()函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python自动化之eval()函数相关的知识,希望对你有一定的参考价值。

eval()函数
说明:将字符串str当成有效的表达式来求值并返回计算结果,即将str转化为list,tuple,dict。
例子:

a = ‘[1,2,3,4]‘
b = ‘([1,2],[4],"c")‘
c = ‘{2,3,4,5}‘
print(eval(a),type(eval(a)))
print(eval(b),type(eval(b)))
print(eval(c),type(eval(c)))
输出:
[1, 2, 3, 4] <class ‘list‘>
([1, 2], [4], ‘c‘) <class ‘tuple‘>
{2, 3, 4, 5} <class ‘set‘>

想一想这种使用环境:需要用户输入一个表达式,并求值。
由此可知,eval()功能强大,但是存在安全隐患。如果用户恶意输入,例如:
import(‘os‘).system(‘dir‘)
那么eval()之后,你会发现,当前目录文件都会展现在用户前面。
那么继续输入:
open(‘文件名‘).read()
存在所有代码及文件曝光的威胁,如果再进一步删除全部文件,就是哭都找不到地方了!

怎么避免安全问题?
1、自行写检查函数;
2、使用ast.literal_eval:自行查看DOCUMENT
参考及本分拷贝文章:
http://blog.csdn.net/zhanh1218
https://blog.csdn.net/zhanh1218/article/details/37562167

以上是关于python自动化之eval()函数的主要内容,如果未能解决你的问题,请参考以下文章

Python之内置函数

python之eval函数,map函数,zip函数

eval()函数的作用是啥?

python当中的eval()函数是起啥作用?

Python之使用eval()函数将字符串的数据结构提取出来

Python逆向之 eval 函数解析,看着一篇就会了,案例掌房