> 运动
pytho安全攻防(pytho怎么防止命令注入)
导语:python安全开发军规之一:防止shell注入
背景在我们的日常开发中,经常会碰到需要使用系统能力的场景,这里的系统能力特指shell脚本,比如调用ping命令、结束进程等等。但是不怀好意的人可能会利用我们写的善良的程序来搞一些破坏。接下来我们就以ping命令为例讲解如何进行python的shell脚本安全开发。
普通程序员的写法¶QA有话说这个程序接受了变量为myserver的输入,执行了ping命令。但是输入和输出并没有做校验,check_output方法并不知道命令的起始位置是什么。
我们假定myserver这个变量是由用户输入的,则这段程序可被用来执行任何命令。
QA使用了一个没破坏性的命令,如果是删除文件之类敏感的操作,则可能会带来灾难。
高级程序员的写法通过将参数列表化,而不是直接将字符串传递给子进程,ping命令分别获取每个参数,因此Shell不会在ping命令执行结束后执行其它命令。这里的Shell默认为False,如果将其设置为True,将会更容易受到攻击。
本文内容由小纳整理编辑!