如何解决python中的安全问题?

时间:2017-08-28 05:09:34

标签: python python-2.7 python-3.x security

我在运行脚本时使用os.system('cls' if os.name == 'nt' else 'clear')来清除输出但是在编码时我遇到了一个安全问题

  

使用shell启动进程,检测到可能的注入,安全问题。

如何解决问题?

脚本链接:https://www.codacy.com/app/vaibhavsingh97/StalkPy/file/9458582870/issues/source?bid=5189215&fileBranchId=5189215#l43

2 个答案:

答案 0 :(得分:1)

来自os.system

  

子进程模块为产卵提供了更强大的功能   新流程并检索其结果;使用该模块是   比使用这个功能更好。请参阅更换旧功能   使用子流程文档中的子流程模块部分   一些有用的食谱。

我建议使用其中一个subprocess作为参数shell=False进行测试,看看是否有关于编码的工作。 subprocess.run(['clear'])在我的本地Python解释器中工作,你必须在编码上测试它。

如果是Python 2.x,您可以尝试:

subprocess.call(['clear'])

答案 1 :(得分:1)

当您使用从用户获取的参数运行函数时,它会出现安全问题。例如:

import os
def do_clear(command): # Notice command is sent as argument from outside world and hence this makes it vulnerable
    os.system(command)

如果使用例如

调用该方法
do_clear('rm -f */*')

然后它可能会删除当前目录的所有文件。但是如果要直接使用'clear'命令,则不必担心安全问题,因为在所有条件下只运行'clear'。所以以下功能足够安全。

def do_clear(): # Notice command is not sent as argument from outside world
    os.system('cls' if os.name == 'nt' else 'clear') # This is not risky as os.system takes clear/cls command always.