我明白爲什麼使用'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