Ver Mensaje Individual
  #2 (permalink)  
Antiguo 27/11/2005, 20:13
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
En principio por seguridad, siempre deberíamos mover el archivo desde donde PHP sube todo archivo que pasa por PHP (al temporal que define en php.ini: upload_tmp_dir) con la función move_uploaded_file() hacia un directorio -nuestro- bajo nuestro control y de ahí según el proceso definitivo que se haga, si no nos interesa más el archivo .. borrarlo.

Esto es así, por qué configuraciones de PHP restrictivas como "safe mode", limitaciones por un open_base_dir .. entre otras NO te van a dejar tomar un archivo vía copy() .. o fopen() y menos borrarlo: unlink() desde el directorio "temporal" que PHP usa mientras sube archivos al servidor. Sólo la función "move_uploaded_file()" está autorizada para acceder -solo- a ese directorio. Todas las demás funciones mencionadas (y otras similares) sólo pueden moverse bajo lo que definan las restricciones como "open_base_dir" entre otras.

De hecho . .hablando de "Seguridad" .. si tu puedes hacer un "fopen()" a un archivo que está por ejemplo en "/tmp" de cierto servidor (del raiz de ese servidor) .. perfectamente podrías hacer un "fopen()" a un directorio de un "vecino" (en un servicio de hosting compartido) u otros archivos de sistema de ese servidor. Así hay mucho servicio de hosting "expuesto" por no aplicar restricciones de ese tipo. Por estos motivos se "inventó" la función move_uploaded_file() por qué sólo se autoriza acceso a esa función y a ese directorio (será el administrador del servidor de turno el que destine un directorio "Temporal" para tal fin donde guste que no compromenta otros archivos "Temporales").

Un saludo,