Comment l'insécurité est / remplacement pour tmpnam?
Question
Je considérais à l'aide tmpnam
pour définir le nom du fichier de sortie d'un QPrinter
. Mais la documentation Python recommande de l'utiliser.
os.tmpnam ()
Retourne un nom de chemin unique qui est raisonnable pour créer un temporaire fichier. ... Les applications sont responsables pour créer correctement et gérer Les fichiers créés à l'aide des chemins retournés par tmpnam (); pas de nettoyage automatique est fourni.
Avertissement
Utilisation de tmpnam () est vulnérable aux attaques de liens symboliques; envisager d'utiliser tmpfile () (section fichier objet Création) au lieu.
de Windows: Microsoft la mise en œuvre de
tmpnam()
toujours crée un nom dans le répertoire racine du lecteur en cours, et c'est généralement un mauvais emplacement pour une température fichier (selon les privilèges, vous pouvez pas même en mesure d'ouvrir un fichier en utilisant ce nom).
- Est-ce vraiment dangereux si ma demande n'a pas besoin de privilèges spéciaux?
- Quelles sont les alternatives sûres étant donné que je ne peux définir un chemin comme le nom du fichier de sortie du
QPrinter
?
La solution
http://docs.python.org/library/tempfile.html
utilisez-le.
Autres conseils
En fonction de vos offres de qprinter avec un fichier qui existe déjà, vous pouvez utiliser QTemporaryFile pour créer un fichier, puis fermez le fichier et conserver la référence à l'objet QTemporaryFile jusqu'à ce que vous avez fini avec elle. (Cela permettra également de nettoyer le fichier pour vous lorsque vous détruisez l'objet.)