¿Cómo es insegura / reemplazo para tmpnam?
Pregunta
Me considerado el uso de tmpnam
para establecer el nombre del archivo de salida de un QPrinter
. Sin embargo, la documentación de Python no recomienda su uso.
os.tmpnam ()
Devuelve un nombre de ruta única que es razonable para la creación de un temporal archivo. ... Las aplicaciones son responsables para crear y gestionar adecuadamente Los archivos creados mediante rutas devueltos por tmpnam (); no es la limpieza automática proporcionado.
Advertencia
El uso de tmpnam () es vulnerable a ataques de enlace simbólico; Considere usar tmpfile () (Object File sección Creación) en su lugar.
Windows: Microsoft de implementación de
tmpnam()
siempre crea un nombre en el directorio raíz de la unidad actual, y eso es en general, una mala ubicación para una temp archivo (dependiendo de los privilegios, es posible incluso no ser capaz de abrir un archivo utilizando este nombre).
- ¿Es realmente inseguro si mi aplicación no necesita ningún privilegio especial?
- ¿Cuáles son las alternativas seguras teniendo en cuenta que sólo puedo establecer una ruta como el nombre del archivo de salida de la
QPrinter
?
Solución
http://docs.python.org/library/tempfile.html
El uso que en su lugar.
Otros consejos
En función de cómo sus ofertas QPrinter con un archivo que ya existe, podría utilizar QTemporaryFile para crear un archivo, a continuación, cierre el archivo y mantener la referencia al objeto QTemporaryFile alrededor hasta que haya terminado con él. (Esto también va a limpiar el archivo para que al destruir el objeto.)