搜索
写经验 领红包
 > 运动

pytho安全攻防(pytho怎么防止命令注入)

导语:python安全开发军规之一:防止shell注入

背景

在我们的日常开发中,经常会碰到需要使用系统能力的场景,这里的系统能力特指shell脚本,比如调用ping命令、结束进程等等。但是不怀好意的人可能会利用我们写的善良的程序来搞一些破坏。接下来我们就以ping命令为例讲解如何进行python的shell脚本安全开发。

普通程序员的写法¶

QA有话说

这个程序接受了变量为myserver的输入,执行了ping命令。但是输入和输出并没有做校验,check_output方法并不知道命令的起始位置是什么。

我们假定myserver这个变量是由用户输入的,则这段程序可被用来执行任何命令。

QA使用了一个没破坏性的命令,如果是删除文件之类敏感的操作,则可能会带来灾难。

高级程序员的写法

通过将参数列表化,而不是直接将字符串传递给子进程,ping命令分别获取每个参数,因此Shell不会在ping命令执行结束后执行其它命令。这里的Shell默认为False,如果将其设置为True,将会更容易受到攻击。

本文内容由小纳整理编辑!