码迷,mamicode.com
首页 > 编程语言 > 详细

python自动化之eval()函数

时间:2019-02-03 09:16:35      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:import   存在   展现   http   list   用户   现在   sdn   一个   

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()函数

标签:import   存在   展现   http   list   用户   现在   sdn   一个   

原文地址:http://blog.51cto.com/11575772/2348578

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!