¿Cómo se puede escribir de forma segura un archivo temporal en una ubicación dentro de un servidor de aplicaciones que sea de acceso público?
Depende de "con seguridad". Si desea evitar el acceso de lectura o escritura de otros usuarios de la misma máquina, debe confiar en los derechos de acceso proporcionados por el sistema operativo (si el sistema operativo es hostil, entonces ya perdió). En sistemas similares a Unix, use la función mkstemp()
, pero tenga cuidado de usar un sistema operativo donde los derechos de acceso se establecen sanely. Por ejemplo, con Linux , mkstemp()
hace las cosas correctamente comenzando con glibc-2.07, pero las versiones anteriores hicieron que el archivo sea legible y escribible por todos los usuarios en la máquina, lo cual fue inconveniente (el problema se podría mitigar haciendo un fchmod()
inmediatamente después, pero esto seguía siendo vulnerable a una condición de raza).
Lea otras preguntas en las etiquetas web-application file-system file-access