zoukankan      html  css  js  c++  java
  • 【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 / ,那就真的是没戏了,一切都完了!

  • 相关阅读:
    父进程pid和子进程pid的大小关系
    static 和extern关键字
    linux源码下载
    tar命令
    USB开发——内核USB驱动+libusb开发方法
    microchip PIC芯片使用方法
    android下4G上网卡
    Modem常用概念
    4G上网卡NIDS拨号之Rmnet驱动
    Uboot源码解析
  • 原文地址:https://www.cnblogs.com/OliverQin/p/12222180.html
Copyright © 2011-2022 走看看