Blog de Gonzalo

FULLPATH EN $_FILES

Una de las novedades de la versión 8.1 de php es que se ha añadido el índice fullpath en $_FILES cuando se va a subir un fichero, o varios, al servidor.
Supongamos que en nuestro ordenador local tenemos la siguiente estructura de archivos:


directorioPadre
 ├── directorio1
 │    └── fichero1.txt
 └── directorio2
      └── fichero2.txt

Si tenemos maquetado el formulario para subir varios ficheros al servidor y subimos los dos ficheros mostrados en el ejemplo y hacemos var_dump($_FILES); veremos lo siguiente:

array(1) {
 ["nombreCampoFile"]=> array(6) {
    ["full_path"]=> array(2) {
      [0]=> string(19) "directorioPadre/directorio1/fichero1.txt"
      [1]=> string(19) "directorioPadre/directorio2/fichero2.txt"
    }
   // ...
 }
}

Php solo analiza la información de la ruta relativa enviada por el navegador/user-agent y pasa esa información al array $_FILES. No hay garantía de que los valores en el array full_path contengan una estructura de directorio real, y las aplicaciones php no deben confiar en esta información.
Las aplicaciones que aceptan la carga de un directorio y almacenan los archivos según los valores de la ruta completa deben asegurarse de que la información de la ruta completa se valide correctamente antes de mover los archivos cargados a un directorio anidado.

Compartir en twitter