【Python】eval函数
eval函数
比较强大,能够把字符串
当成有效表达式
来求值并返回计算结果
注:以下代码是在IPython中运行的结果
# 基本的数学计算
In [1]: eval("1 + 1")
Out[1]: 2
# 字符串重复
In [2]: eval("'-' * 20")
Out[2]: '--------------------'
# 将字符串转化为列表
In [3]: type(eval("[1,2,3]"))
Out[3]: list
# 将字符串转化为字典
In [4]: type(eval("{'name':'Zhangsan','age':23}"))
Out[4]: dict
01.不要滥用eval
在开发的时候千万不要使用eval
直接转换input
的结果
具体的原因是:
__import__('os').system('ls')
等价于:
import os
os.system("ls")
执行成功,则返回0
执行失败,则返回错误信息
02.案例说明
input_str = input("请输入一道算术题:")
print(input_str+"的结果是:", eval(input_str))
程序运行后,输入代码:__import__('os').system('cat Demo3.py')
后可以查看整个Demo3.py文件的内容,这就存在风险了。有可能代码被人看完后,直接被rm -f Demo3.py
删除了。如果遇到恶意黑客,并且服务器是Linux服务器,直接使用 rm -rf /
,那就真的是没戏了,一切都完了!
作者:奔跑的金鱼
声明:书写博客不易,转载请注明出处,请支持原创,侵权将追究法律责任
个性签名:人的一切的痛苦,本质上都是对自己无能的愤怒
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!