[Php-avanzado] chequear subida correcta de archivos

Leonardo Tadei - Pegasus Tech Supply leonardot en pegasusnet.com.ar
Sab Abr 30 02:49:44 ART 2011


Hola Jésica y Roger,

	no, el objeto de usar is_uploaded_file() es otro.
	No hay tema de permisos, porque si el dueño del archivo al subirlo al
directorio temporal es Apache, al moverlo se mantendrá el dueño.

	Siempre hay que usar is_uploaded_file() porque lo que previene esta
función es que se mueva un archivo que no fue subido, es decir, que ya
exista en el servidor.

	Por ejemplo si yo hago:

move_uploaded_file('/etc/passwd' , 'mio/nombre.txt' );

	me estoy haciendo una copia del archivo de usuarios del sistema.

	Pero si bien esto anda, is_uploaded_file('/etc/passwd') va a dar falso,
porque ese archivo no fue el subido, sino que ya estaba en el sistema.

	Naturalmente que vos podés escribir un script que use copy() y quedarte
con el archivo de los usuarios, pero la idea de esta práctica es
prevenir que por un error más sutil de programación, un usuario
malintencionado pueda usar tu script para obtener copias de archivos
sensibles del sistema.

	Por todo esto es una buena práctica hacer ambas verificaciones: que no
haya error en la subida, y que el archivo sea un archivo subido.


El sáb, 30-04-2011 a las 01:04 -0300, Rogelio A. Schwindt escribió:
> El move_uploaded_file() es todo un tema en entornos linux...
> (corrijanme si estoy equivocado o me comi algo)
>  
> El tema es que si moves el archivo subido con la funcion
> move_uploaded_file() desde por ejemplo /tmp/phpxxxx.tmp  a tu
> direcctorio supongamos /home/usuario/www/uploads
> los permisos del archivo phpxxxx.tmp son de apache.... pero
> en /home/usuario/www/uploads los permisos son del usuario tuyo de
> ftp...
> Salvo que des permiso en la carpeta uploads para que escriba apache,
> el move_uploaded_file() fallara por falta de permisos... en el caso de
> que des los permisos para que apache escriba en uploads, el
> propietario de ese archivo seguira siendo apache, por lo que no te
> quedara otra que hacer la famosa maniobra ftp para que los archivos te
> queden con permisos de tu usuario... y no usar move_uploaded_file() 
>  
> Saludos.
>  
> Rogelio Schwindt
>         ----- Original Message ----- 
>         From: Jesica Billia 
>         To: Forum PHP ing 
>         Sent: Saturday, April 30, 2011 12:36 AM
>         Subject: [Php-avanzado] chequear subida correcta de archivos
>         
>         
>         Buenas, tengo una consulta para cuando subo archivos, porque
>         no me queda en claro, si antes de procesar el archivo y
>         subirlo, 
>         
>         si yo chequeo $_FILES['archivo']['error'] == UPLOAD_ERR_OK y
>         si se cumple con esa condición entonces continúo 
>         
>         y luego utilizo la función
>         is_uploaded_file( $_FILES['archivo']['tmp_name'] ) para
>         controlar si se ha subido el archivo, es necesario o lo puedo
>         omitir
>         
>         antes de usar el
>         move_uploaded_file( $_FILES['archivo']['tmp_name'] ,
>         $_FILES['archivo']['name'] ) ?
>         
>         Gracias y Saludos!!
>         
>         
>         __________ Información de ESET Smart Security, versión de la
>         base de firmas de virus 6082 (20110429) __________
>         
>         ESET Smart Security ha comprobado este mensaje.
>         
>         http://www.eset.com
>         
>         
>         
>         ______________________________________________________________
>         
>         _______________________________________________
>         Php-avanzado mailing list
>         Php-avanzado en pato2.fi.mdp.edu.ar
>         http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>         
>         
>         __________ Información de ESET Smart Security, versión de la
>         base de firmas de virus 6082 (20110429) __________
>         
>         ESET Smart Security ha comprobado este mensaje.
>         
>         http://www.eset.com
>         
> 
> 
> __________ Información de ESET Smart Security, versión de la base de
> firmas de virus 6082 (20110429) __________
> 
> ESET Smart Security ha comprobado este mensaje.
> 
> http://www.eset.com
> _______________________________________________
> Php-avanzado mailing list
> Php-avanzado en pato2.fi.mdp.edu.ar
> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado

-- 
Leonardo Tadei
leonardot en pegasusnet.com.ar
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key



Más información sobre la lista de distribución Php-avanzado