Come si fa a scrivere in modo sicuro un file temporaneo in una posizione all'interno di un server delle applicazioni che è pubblicamente accessibile?
Dipende da "sicuro". Se si desidera evitare l'accesso in lettura o scrittura da parte di altri utenti della stessa macchina, è necessario fare affidamento sui diritti di accesso forniti dal sistema operativo (se il sistema operativo è ostile, allora si è già perso). Sui sistemi di tipo Unix, usa la funzione mkstemp()
, ma fai attenzione ad usare un SO dove i diritti di accesso sono impostati in modo corretto. Ad esempio, con Linux , mkstemp()
fa le cose correttamente all'inizio con glibc-2.07, ma le versioni precedenti rendevano il file leggibile e scrivibile da tutti gli utenti sulla macchina, che era scomodo (il problema poteva essere mitigato facendo subito un fchmod()
, ma questo era ancora vulnerabile a una condizione di competizione).
La mia raccomandazione sarebbe di assicurare che questo file temporaneo sia scritto al di fuori del webroot. Ciò garantisce che non sia possibile accedervi tramite una semplice chiamata del browser Web.
Il resto è fino al sistema operativo come punti Tom.
Leggi altre domande sui tag web-application file-system file-access