跳到内容

subprocess-popen-with-shell-equals-true (S602)

添加于 v0.0.262 · 相关议题 · 查看源码

源自 flake8-bandit linter。

作用

检查是否存在通过 shell 启动子进程的方法调用。

为什么这不好?

通过 shell 启动子进程可能允许攻击者执行任意 shell 命令。请考虑在不使用 shell 调用的情况下启动进程,并对输入进行清理,以降低 shell 注入的风险。

示例

import subprocess

subprocess.run("ls -l", shell=True)

建议改为

import subprocess

subprocess.run(["ls", "-l"])

参考