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()函数的主要内容,如果未能解决你的问题,请参考以下文章