在子流程(shell = False)中使用它之前,從外部源(例如:xml文件)中清理文件名的常見做法是什麼?如何正確清理文件名(防止shell注入)?
更新: 在發送一些經過解析的字符串之前,我想進行一些基本的安全檢查。給出的示例使用mpg123(命令行音頻播放器)以遠程模式播放聲音文件。
filename = child.find("filename").text # e.g.: filename = "sound.mp3"
pid = subprocess.Popen(["mpg123"],"-R"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
command = "L "+filename+"\n"
pid.stdin.write(command.encode())
爲什麼你要清理文件名,如果沒有涉及shell? – lunaryorn 2011-01-19 11:52:17
爲避免覆蓋或讀取系統/私人文件? – TryPyPy 2011-01-19 11:54:42