/tmpnam/有多不安全?替代方案是什么?
我考虑过用 tmpnam
来设置 QPrinter
的输出文件名。但Python的文档不推荐这样做。
os.tmpnam()
这个函数会返回一个独特的路径名,适合用来创建临时文件。... 应用程序需要负责正确创建和管理使用
tmpnam()
返回的路径创建的文件;系统不会自动清理这些文件。警告
使用
tmpnam()
存在被符号链接攻击的风险;建议使用tmpfile()
(文件对象创建部分)作为替代。在Windows上:微软实现的
tmpnam()
总是会在当前驱动器的根目录下创建文件名,而这个位置通常不适合存放临时文件(根据权限的不同,你甚至可能无法用这个名字打开文件)。
- 如果我的应用程序不需要任何特殊权限,这样真的不安全吗?
- 考虑到我只能设置
QPrinter
的输出文件名路径,有什么安全的替代方案吗?
2 个回答
0
根据你的QPrinter如何处理已经存在的文件,你可以使用QTemporaryFile来创建一个文件。创建后,关闭这个文件,并保留对QTemporaryFile对象的引用,直到你用完它为止。这样,当你销毁这个对象时,它会自动帮你清理这个文件。
7
请查看这个链接:http://docs.python.org/library/tempfile.html
用这个来代替吧。