python open文件安全隐患_python的其他安全隐患
零、绪论
python这里以python2.7为研究对象,对应的我们会简要说明一下python3,其他指与反序列化无关的安全隐患问题。
一、标准输入输出:
1、首先,我们来看下标准输入输出
1 importsys2 #常用参数:
3 sys.stdin.read()4 sys.stdin.readline()5 sys.stdin.readlines()6 sys.stdin.write()7 sys.stdin.writelines()8 sys.stdin.flash()9 sys.stdin.close()10 sys.stdout.read()11 sys.stdout.readline()12 sys.stdout.readlines()13 sys.stdout.write()14 sys.stdout.writelines()15 sys.stdout.flash()16 sys.stdout.close()
本质上都是buffer,对于判断否有数据可以使用isatty()
打印到文件,可以使用sys.stdout=fd
2、测试一段代码:
1 importos2 print input()
你输入os.system('id')就会出结果,不信的话可以尝试哦(对于python2.x)。
你可以查看help(input)
'''Help on built-in function input in module __builtin__:
input(...)
input([prompt]) -> value
Equivalent to eval(raw_input(prompt)).
(END)'''
所以使用raw_input 就可以避免这个问题,这也是问啥python2.7推荐使用raw_input的原因,raw_input基本相当于sys.stdin.readline().strip(),也就是去掉了最后的换行符号。
python3取消了raw_input,input等于python2.7的raw_input
二、assert代码执行:
1 assert isinstance(os.system(id),int)
assert 后面应该是一个判断,本质上是assert true 或者assert false(这种情况会raise AssertError)
但是咱这个判断里面可以做到代码执行,当然通过代码执行也可以做到命令执行啦。
所以assert一般只能用于测试,不能再发布版本中使用。
三、模块注入、导入代码执行、猴子补丁
1、导入代码执行很简单,就是你在引入的模块中定义执行的代码在import语句中会执行,但不包括if __name__ == "__main__"中的代码。
2、另外在命令行输入中检查到python -/-c/-m等都会导致当前目录加入sys.path
3、猴子补丁是指动态修改程序指令
1 __builtins__.False, __builtins__.True =True, False2 shutil.copy.__code__ = (lambda src, dst: dst).__code__
3 x_obj.__class__ = Y
以上代码都动态改变了程序的指令结果,尤其是第一行,直接把true和false都反转了,当然在python3后这第一行是无法运行的。
python open文件安全隐患_python的其他安全隐患相关推荐
- vscode使用教程python-VSCode下好用的Python插件及配置_python
这篇文章主要介绍了微软官方的Python插件,已经自带很多功能,下面是插件功能描述,其中部分内容我做了翻译,需要的朋友可以参考下 MS Python插件. 这是微软官方的Python插件,已经自带很多 ...
- python算法和数据结构_Python中的数据结构和算法
python算法和数据结构 To 至 Leonardo da Vinci 达芬奇(Leonardo da Vinci) 介绍 (Introduction) The purpose of this ar ...
- python中定义数据结构_Python中的数据结构—简介
python中定义数据结构 You have multiples algorithms, the steps of which require fetching the smallest value ...
- python 数据框缺失值_Python:处理数据框中的缺失值
python 数据框缺失值 介绍 (Introduction) In the last article we went through on how to find the missing value ...
- python决策树 多分类_Python中的决策树分类:您需要了解的一切
python决策树 多分类 什么是决策树? (What is Decision Tree?) A decision tree is a decision support tool that uses ...
- python基础知识测试题_Python中的单元测试—基础知识
python基础知识测试题 Unit testing is the number one skill which separates people who just finished their de ...
- python个人网站开发_python 全栈开发,Day81(博客系统个人主页,文章详情页)
一.个人主页 随笔分类 需求:查询当前站点每一个分类的名称以及对应的文章数 完成这个需求,就可以展示左侧的分类 它需要利用分组查询,那么必须要会基于双下划线的查询. 基于双下划线的查询,简单来讲,就是 ...
- python怎么处理数据_python中scrapy处理项目数据的实例分析
在我们处理完数据后,习惯把它放在原有的位置,但是这样也会出现一定的隐患.如果因为新数据的加入或者其他种种原因,当我们再次想要启用这个文件的时候,小伙伴们就会开始着急却怎么也翻不出来,似乎也没有其他更好 ...
- python游戏贪吃蛇_Python写的贪吃蛇游戏例子_python
这篇文章主要介绍了Python写的贪吃蛇游戏例子,练手作品,又好玩又可以学到东西,需要的朋友可以参考下 第一次用Python写这种比较实用且好玩的东西,权当练手吧 游戏说明: * P键控制" ...
最新文章
- hexo-github-博客搭建指南
- 非线性优化:徒手实现LM算法
- 不当免费技术支持的10种方法
- 故障码123401_故障引导案例 | 宝马F18 ECM故障引导
- llmp_install.zip
- 避免CRM_IB 013 error message
- window 之命令行的cd
- docker——三剑客之Docker Machine
- 谈一谈HTTP中Get与Post的区别与主要应用场景
- VS2015上配置opencv2.4.11
- php 数组设置为空,PHP数组设置空值
- windows进入mysql
- Aescrpts Text Chain for Mac - AE动态文本链排列脚本插件
- 80486/486/Intel486 架构/流水线及其优化
- 机器学习基础(五十九)—— 高级优化算法(梯度下降、L-BFGS、共轭梯度)
- DoTWeen常用方法
- 北京师范大学计算机学院 姚力,姚力(北京师范大学信息科学与技术学院院长)_百度百科...
- html 垂直底端对齐,CSS vertical-align(垂直对齐)
- int数据类型的取值范围是多少?怎么计算的?
- 工科学术论文书写攻略