跳到内容

subprocess-without-shell-equals-true (S603)

源自 flake8-bandit linter。

作用

检查启动子进程但不使用 shell 的方法调用。

为什么这不好?

在没有 shell 的情况下启动子进程可以防止攻击者执行任意 shell 命令;但是,它仍然容易出错。 考虑验证输入。

已知问题

容易出现误报,因为很难确定传递的参数是否已验证(#4045)。

示例

import subprocess

cmd = input("Enter a command: ").split()
subprocess.run(cmd)

参考