将用户输入传递给python子进程是否危险?

时间:2018-06-14 17:00:53

标签: python

所以,我的代码是这样的

tsharkCall = ["C:\\Program Files\\Software\\binary.exe", userinput]
process = subprocess.Popen(tsharkCall, stdout=subprocess.PIPE, stderr=None)
output, error = process.communicate()
streams = output.split("\r\n")

请注意binary.exe是一些处理用户输入的二进制可执行文件。 一些示例是binary.exe filename.txtbinary.exe <some input>

考虑到这里,我已将shell=False留给Popen这是否会带来安全风险,例如命令注入。就像让我们考虑某人是否注入\r\ndir%0d%0amalicious_command一样,它会破坏并运行一个单独的命令(即命令注入)。我尝试使用CRLF来逃避但Popen不会让任意命令工作。对我好。

但是使用这种方法在生产中执行用户输入也是一种明智的方式吗?

0 个答案:

没有答案