我明白为什么使用'shell = True'可能会导致安全风险,如果您有不可信的输入。但是,我不明白“shell = False”如何避免相同的风险。Python子流程安全
据推测,如果我想允许用户提供输入他可能输入:VAR =“室射频/”
我的代码可能只是:
subprocess.call(var,shell=True) # bad stuff
或者我可以做:
varParts=var.split()
subprocess.call(varParts,shell=False) # also bad, right?
这似乎是假设是不会经过处理输入的麻烦,如我在第二个例子中所做的,因此这将不会发生?
ummmm你逝去的不受信任的输入您正在运行显著风险呼叫....你在哪里任何时候听到shell = False使它安全? http://docs.python.org/2/library/subprocess.html#frequently-used-arguments ...它所做的就是停止shell注入,这只是一次攻击...... –
你提供的链接有一个注释说:“警告: 如果与不可信输入组合,调用shell = True的系统shell可能会带来安全隐患。”这意味着我使用shell = False提供了一些防御。 – user3175543