前言

如果大家想要在python中将字符串转换成列表,数字,字典等操作,都会想到使用eval(),确实这个函数很好用,但是它却存在一定的安全性

eval的漏洞

如果用户使用如下的代码

open(r'D://filename.txt', 'r').read()__import__('os').system('dir')__import__('os').system('rm -rf /etc/*')

eval就会不管三七二十一,显示你电脑目录结构,读取文件,删除文件…..如果是格盘等更严重的操作,她也会照做不误!
更详细的情况可以参考这里

如何避免这个漏洞

可以使用ast.literal_eval,这个函数具有同样的eval()的功能,但是会判断需要计算的内容计算后是不是合法的python类型,如果是则进行运算,否则就不进行运算。
stackoverflow中的解释

参考

https://nedbatchelder.com/blog/201206/eval_really_is_dangerous.html
https://blog.csdn.net/Jerry_1126/article/details/68831254
https://stackoverflow.com/questions/15197673/using-pythons-eval-vs-ast-literal-eval

建议使用更加安全的ast.literal_eval去替代eval相关推荐

  1. python3 eval安全替代函数ast.literal_eval的区别

    python3 eval安全替代函数ast.literal_eval 一.eval函数 eval()官方文档里面给出来的功能解释是:将字符串string对象转化为有效的表达式参与求值运算返回计算结果. ...

  2. ast.literal_eval

    eval函数在python中做数据类型的转换还是很有用的.它的作用就是把数据还原成它本身或者是能够转化成的数据类型. 那么eval和ast.literal_val()的区别是什么呢? eval在做计算 ...

  3. python3 eval安全替代函数ast.literal_eval

    一.eval函数 eval()官方文档里面给出来的功能解释是:将字符串string对象转化为有效的表达式参与求值运算返回计算结果. 示例: >>> s='8*8' >>& ...

  4. ast.literal_eval(转)

    eval函数在Python中做数据类型的转换还是很有用的.它的作用就是把数据还原成它本身或者是能够转化成的数据类型.那么eval和ast.literal_val()的区别是什么呢?本文将大家介绍关于P ...

  5. 李开复建议:想创业的青年先去小公司磨练

    在李开复的身上有很多闪光的标签--卡内基梅隆大学计算机专业博士,曾在苹果.微软.谷歌等担任要职.然而,让人印象最深刻的莫过于"创业导师". 这位祖籍四川的台湾人,求学时远渡重洋.无 ...

  6. js文本内容显示6行,超出6行出现显示更多按钮,css样式超出行数只能使用...去替代

    js处理文本内容显示6行,超出6行出现显示更多按钮,对于网上说的css样式处理,基本上都是超出6行使用-去处理,不符合需求,先看结果,再看需求:如下 先看实现结果,如下图所示: 需求:产品经理提出详情 ...

  7. 基于Python实现成交量的股票数据分析系统【100010993】

    基于成交量的股票数据分析系统 1. 数据获取 1.1. 实验环境搭建 系统及使用的语言: Windows 10 专业版 1903 操作系统版本: 18362.356 Python 3.7.3 64-b ...

  8. python笔记22-literal_eval函数处理返回json中的单双引号

    前言 在做接口测试的时候,最常见的接口返回数据就是json类型,json类型数据实际上就是字串,通常标准的json格式是可以转化成python里面的对应的数据类型的 有时候开发返回的数据比较坑,不按常 ...

  9. python中错误useofeval_Python-使用pd.eval()在熊猫中进行动态表达评估

    小编典典 这个答案潜入各种特性和功能的提供pd.eval,df.query和df.eval. 设置 示例将涉及这些DataFrame(除非另有说明). np.random.seed(0) df1 = ...

最新文章

  1. VB6 实现命令行调用时附着到原控制台
  2. Android学习:自定义ViewGroup方法总结
  3. winform 自适应屏幕分辨率具体操作和注意事项
  4. SpringDataJpa报错: Table 'XX.hibernate_sequence' doesn't exist
  5. 明源云创CI/CD技术演进
  6. 1-4 TCP/IP协议族
  7. 网站检测之防注入绕过的十一种技巧
  8. 渗透测试入门4之内网跨边界应用
  9. Gibbs 采样的应用
  10. 德芙背后刻骨铭心的痛
  11. 同样一个网址,用电信网络和中国移动的手机网络,下载速度相差巨大
  12. mysql sqlyog 备份计划_SqlYog 自动备份数据库
  13. 计算机 |符号名,电脑键盘符号大全|电脑键盘符号怎么打
  14. Dell电脑,Win10系统,插入耳机没反应或者说听筒没声音该怎么解决?
  15. 数学建模中各种评价类模型的优点和缺点总结
  16. TRICKLE轻量级的用户空间带宽控制管理工具
  17. 基于CCS工程MSP430串口升级(二)
  18. 通过Hook进行游戏的全局加速
  19. Xilinx Arch PCIE卡
  20. FreeType2使用总结

热门文章

  1. 科大奥锐干涉法测微小量实验的数据_光学干涉观测精确丈量宇宙 | 赛先生天文...
  2. 2022-2028年中国电梯行业市场调查及前瞻分析报告
  3. 二叉树的前序、中序、后序非递归遍历 python实现
  4. 关于二叉树的层次遍历的花样(c++实现)
  5. 【Spring】框架简介
  6. WSL 或者ubantu安装 apt-get install npm 失败解决方法
  7. 日志处理logger
  8. LED芯片,应用品,蓝宝石衬底,集成电路,UV
  9. TensorFlow文本情感分析实现
  10. 一种新的高级抖动分离解析方法