所以,我的代码是这样的
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.txt
或binary.exe <some input>
考虑到这里,我已将shell=False
留给Popen
这是否会带来安全风险,例如命令注入。就像让我们考虑某人是否注入\r\ndir
或%0d%0amalicious_command
一样,它会破坏并运行一个单独的命令(即命令注入)。我尝试使用CRLF来逃避但Popen
不会让任意命令工作。对我好。
但是使用这种方法在生产中执行用户输入也是一种明智的方式吗?