Python tempfile.NamedTemporaryFile的这种用法是否安全(即没有使用过的tempfile.mktemp安全问题)?
def mktemp2():
"""Create and close an empty temporary file.
Return the temporary filename"""
tf = tempfile.NamedTemporaryFile(delete=False)
tfilename = tf.name
tf.close()
return tfilename
outfilename = mktemp2()
subprocess.call(['program_name','-o',outfilename])
我需要运行需要输出文件名作为参数之一的外部命令。如果存在而没有警告,它将覆盖outfilename。我想使用临时文件,因为我只需要阅读其内容,我以后不需要它。
答案 0 :(得分:3)
完全不安全。攻击者有机会在删除和打开子进程之间创建具有该名称的任何权限(或符号链接)的文件
如果您可以在/ tmp以外的目录中创建文件,该目录由您的进程拥有并且只能读/写,您不需要关心文件的安全性,因为目录中的任何内容都受到保护