tmpnam 的替代品有多不安全?
我考虑使用 tmpnam 来设置 QPrinter 的输出文件名。但Python 文档建议不要使用它。
os.tmpnam()
返回一个对于创建临时文件来说合理的唯一路径名 文件。 ...应用程序负责 为了正确创建和管理 使用返回的路径创建的文件 tmpnam();没有自动清理 提供。
<块引用>警告
使用 tmpnam() 容易受到符号链接攻击;考虑使用 tmpfile()(文件对象部分 创建)代替。
Windows:微软的 始终执行
tmpnam()
在根目录中创建一个名称 当前驱动器的,那就是 一般来说,临时工的位置很差 文件(根据权限,您可以 甚至无法使用打开文件 这个名字)。
- 如果我的应用程序不需要任何特殊权限,这真的不安全吗?
- 考虑到我只能将路径设置为 QPrinter 的输出文件名,有哪些安全的替代方案?
I considered using tmpnam
to set the output file name of a QPrinter
. But the Python documentation recommends against using it.
os.tmpnam()
Return a unique path name that is reasonable for creating a temporary
file. ... Applications are responsible
for properly creating and managing
files created using paths returned by
tmpnam(); no automatic cleanup is
provided.Warning
Use of tmpnam() is vulnerable to symlink attacks; consider using
tmpfile() (section File Object
Creation) instead.Windows: Microsoft’s
implementation oftmpnam()
always
creates a name in the root directory
of the current drive, and that’s
generally a poor location for a temp
file (depending on privileges, you may
not even be able to open a file using
this name).
- Is this really insecure if my application doesn't need any special privileges?
- What are secure alternatives considering that I can only set a path as the output file name of the
QPrinter
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
请阅读 http://docs.python.org/library/tempfile.html
使用反而。
Please read http://docs.python.org/library/tempfile.html
Use that instead.
根据 QPrinter 处理已存在文件的方式,您可以使用 QTemporaryFile 创建文件,然后关闭该文件并保留对 QTemporaryFile 对象的引用,直到完成为止。 (当您销毁对象时,这也会为您清理文件。)
Depending on how your QPrinter deals with a file that already exists, you could use QTemporaryFile to create a file, then close the file and keep the reference to the QTemporaryFile object around until you are done with it. (This will also clean up the file for you when you destroy the object.)