tmpnam有多不安全/替代?

时间:2009-11-05 11:07:26

标签: python security qt pyqt

我考虑使用tmpnam来设置QPrinter的输出文件名。但Python文档建议不要使用它。

  

os.tmpnam()

     

返回合适的创建临时路径的唯一路径名   文件。 ......应用程序负责   正确创建和管理   使用由返回的路径创建的文件   使用tmpnam();没有自动清理   提供。

     
    

警告

         

使用tmpnam()容易受到符号链接攻击;考虑使用     tmpfile()(部分文件对象     创作)而不是。

  
     Windows:微软的   总是tmpnam()的实施   在根目录中创建一个名称   当前的驱动器,那是   一般来说,一个温度较低的地方   文件(取决于特权,你可以   甚至无法使用打开文件   这个名字)。

  • 如果我的应用程序不需要任何特殊权限,这真的不安全吗?
  • 考虑到我只能将路径设置为QPrinter的输出文件名,有什么安全的选择?

2 个答案:

答案 0 :(得分:7)

答案 1 :(得分:0)

根据QPrinter如何处理已存在的文件,您可以使用QTemporaryFile创建文件,然后关闭文件并保持对QTemporaryFile对象的引用,直到完成为止。 (当您销毁对象时,这也将为您清理文件。)