Wie unsicher ist / Ersatz für tmpnam?
Frage
ich als tmpnam
mit dem Ausgabedateinamen eines QPrinter
einzustellen. Aber die Python-Dokumentation empfiehlt dagegen verwenden.
os.tmpnam ()
Gibt einen eindeutigen Pfadnamen, die eine temporäre sinnvoll ist für die Erstellung von Datei. ... Anwendungen sind verantwortlich für richtig Erstellung und Verwaltung Dateien erstellt Pfade unter Verwendung von zurück tmpnam (); keine automatische Bereinigung zur Verfügung gestellt.
Warnung
Die Verwendung von tmpnam () ist für Symlink-Attacken anfällig; prüfen, mit tmpfile () (Abschnitt Datei-Objekt Creation) statt.
Fenster: Microsoft Umsetzung von
tmpnam()
immer schafft einen Namen im Stammverzeichnis des aktuellen Laufwerks, und das ist im Allgemeinen ein schlechter Ort für eine temporäre Datei (auf Privilegien abhängig, können Sie nicht einmal eine Datei öffnen können mit dieser Name).
- Ist das wirklich unsicher, wenn meine Anwendung keine besonderen Privilegien nicht braucht?
- Was erwägen sichere Alternativen, dass ich nur einen Pfad als Ausgabedateiname des
QPrinter
einstellen kann?
Lösung
Bitte lesen Sie http://docs.python.org/library/tempfile.html
verwenden, die statt.
Andere Tipps
Je nachdem, wie QPrinter beschäftigt sich mit einer Datei, die bereits vorhanden ist, Sie QTemporaryFile verwenden könnte eine Datei zu erstellen, und schließen Sie die Datei und halten den Verweis auf das QTemporaryFile Objekt herum, bis Sie damit fertig sind. (Dies wird auch die Datei für Sie bereinigen, wenn Sie das Objekt zu zerstören.)