这个python tempfile.NamedTemporaryFile的用法是否安全?

时间:2010-10-21 10:14:06

标签: python file temporary-files

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。我想使用临时文件,因为我只需要阅读其内容,我以后不需要它。

1 个答案:

答案 0 :(得分:3)

完全不安全。攻击者有机会在删除和打开子进程之间创建具有该名称的任何权限(或符号链接)的文件

如果您可以在/ tmp以外的目录中创建文件,该目录由您的进程拥有并且只能读/写,您不需要关心文件的安全性,因为目录中的任何内容都受到保护