Foros del Web » Programando para Internet » PHP »

Prohibir extensiones en upload php

Estas en el tema de Prohibir extensiones en upload php en el foro de PHP en Foros del Web. Hola a todos. Quería haceros una pregunta referente a una aplicación php que tengo. La cuestión es que esta aplicación tiene un upload para subir ...
  #1 (permalink)  
Antiguo 18/05/2010, 07:52
 
Fecha de Ingreso: abril-2009
Mensajes: 11
Antigüedad: 15 años
Puntos: 0
Prohibir extensiones en upload php

Hola a todos.

Quería haceros una pregunta referente a una aplicación php que tengo.

La cuestión es que esta aplicación tiene un upload para subir archivos y quería saber si podría especificar en el php.ini de alguna manera que solo se pudiesen subir archivos con una extensión determinada o lo que es lo mismo, bloquear la subida de algunas extensiones como .exe, .bat, .com... etc

Gracias.
  #2 (permalink)  
Antiguo 18/05/2010, 09:21
 
Fecha de Ingreso: enero-2008
Ubicación: Buenos Aires
Mensajes: 305
Antigüedad: 16 años, 3 meses
Puntos: 14
Respuesta: Prohibir extensiones en upload php

No sabria decirte si puedes hacerlo desde el php.ini, pero cuando haces el upload, el array de las propiedades de $_FILE tiene una que indica la extension y la puedes comprar con un if o un switch tranquilamente.
  #3 (permalink)  
Antiguo 18/05/2010, 11:08
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Prohibir extensiones en upload php

Hazo el php y listo, Ejemplo:


$archivo=explode(".", "ARCHIVO_A_SUBIR");

if($archivo[1] != "jpg"){

echo "El archivo a subir no es jpg...!";

}else{

//se sube el archivo

}
  #4 (permalink)  
Antiguo 18/05/2010, 14:22
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Prohibir extensiones en upload php

Cita:
Iniciado por wiwi74 Ver Mensaje
Hazo el php y listo, Ejemplo:


$archivo=explode(".", "ARCHIVO_A_SUBIR");

if($archivo[1] != "jpg"){

echo "El archivo a subir no es jpg...!";

}else{

//se sube el archivo

}
¿Y si el nombre fuera algo como : nombre.fecha.hora.uploader.jpg?
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #5 (permalink)  
Antiguo 18/05/2010, 23:12
 
Fecha de Ingreso: enero-2008
Ubicación: Buenos Aires
Mensajes: 305
Antigüedad: 16 años, 3 meses
Puntos: 14
Respuesta: Prohibir extensiones en upload php

Como te dije antes puedes comparar el type del archivo que se guarda con este parametro:
Código PHP:
Ver original
  1. $_FILES['campo_file']['type']

y para fijarte que extension tiene, puedes hacer un if simple:
Código PHP:
Ver original
  1. if($_FILES['campo_file']['type'] != "application/octet-stream" && $_FILES['campo_file']['type'] != "multipart/x-zip" )
  2. {
  3.  // no es .exe y tampoco es .zip
  4.  // entonces hago el upload
  5. }
  6. else
  7. {
  8.  // el archivo no esta permitido.
  9. }

y para ver los distintos type que pertenecen a cada extension puedes buscarlos aqui:

http://www.webmaster-toolkit.com/mime-types.shtml
  #6 (permalink)  
Antiguo 19/05/2010, 04:03
 
Fecha de Ingreso: abril-2009
Mensajes: 11
Antigüedad: 15 años
Puntos: 0
Respuesta: Prohibir extensiones en upload php

Gracias... voy a probar y os cuento..
  #7 (permalink)  
Antiguo 19/05/2010, 06:50
 
Fecha de Ingreso: mayo-2010
Mensajes: 6
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Prohibir extensiones en upload php

hola amigo yo tengo este codigo para permitir algunas extensiones en el upload.
Código PHP:
$allowed_types = array(
     
'image/pjpeg',
     
'image/gif',
     
'image/png',
     
'image/jpeg',
     
'image/jpg',
     
'application/msword',
     
'application/vnd.ms-excel',
     
'application/pdf',
     
'application/vnd.ms-powerpoint'); 
Avisame si tiens duda, esas son las extensiones mime que se pueden obtener con el $_FILES['type'].

Última edición por bl4ck; 19/05/2010 a las 06:52 Razón: agregar mas contenido
  #8 (permalink)  
Antiguo 19/05/2010, 07:43
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Prohibir extensiones en upload php

Mira:

//literal
//$_FILES['archivo']['name'] = "archivo.txt";

//esta variable contiene el nombre del archivo subido
//siempre y cuando en el form lo llames (como en este caso) asi "archivo":
<input type="file" name="archivo" />

( $_FILES['archivo']['name'] )

//si no te gusta esto
$ext = explode(".",$_FILES['archivo']['name']);
echo $ext[1]."<br />";


//buscamos el ultimo punto
$dot_pos = strrchr($_FILES['archivo']['name'], ".");
$ext = explode(substr($dot_pos,0,1),$_FILES['archivo']['name']);
echo $ext[1]."<br />";


$ext = substr($_FILES['archivo']['name'], -3);
echo $ext."<br />";


...Espero que te sirva. ..Bueno, a mi me sirve.

Saludos...!
  #9 (permalink)  
Antiguo 19/05/2010, 07:57
 
Fecha de Ingreso: abril-2009
Mensajes: 11
Antigüedad: 15 años
Puntos: 0
Respuesta: Prohibir extensiones en upload php

bueno el archivo creo que hace la función de upload lo dejo aquí adjunto. En el creoq eu he visto algo referente a ello marcado con un comentario pero no se modificarlo a ver si me echais una mano.

Se encuentra en la linea 65

/**
* Return the files from specific directory. This function can filter result
* by file extension (accepted param is single extension or array of extensions)
*
* @example get_files($dir, array('doc', 'pdf', 'xst'))
*
* @param string $dir Dir that need to be scaned
* @param mixed $extension Singe or multiple file extensions that need to be
* mached. If null no check is performed...
* @param boolean $base_name_only Return only filenames. If this option is set to
* false this function will return full paths.
* @return array
*/

Este es el enlace al archivo al completo: http://www.megaupload.com/?d=MGL43XQN

Última edición por render_; 19/05/2010 a las 08:04
  #10 (permalink)  
Antiguo 19/05/2010, 08:08
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Prohibir extensiones en upload php

//aqui tendrias las extensiones, pero esta comentado y habria que ver mas
//example get_files($dir, array('doc', 'pdf', 'xst'))


A ver si te sirve esto:


http://php.net/manual/en/features.file-upload.php
http://www.mediawiki.org/wiki/Manual...g_file_uploads


...Ah, diste la url para descargarlo...
  #11 (permalink)  
Antiguo 19/05/2010, 08:20
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Prohibir extensiones en upload php

Busca esta linea 78:

//veras esto, acepta extension doc
function get_files($dir, $extension = doc, $base_name_only = false)


//prueba asi, nota que agregue un array, acepta varias extenciones
function get_files($dir, $extension = array('doc', 'pdf', 'txt'), $base_name_only = false)


//o hazlo asi:
$extension = array('doc', 'pdf', 'txt')
function get_files($dir,$extension , $base_name_only = false)


//Nota tambien que en la linea 86 hace esto, verifica si $extension es un array:
if(is_array($extension))


Espero que funcione...!
  #12 (permalink)  
Antiguo 20/05/2010, 01:34
 
Fecha de Ingreso: abril-2009
Mensajes: 11
Antigüedad: 15 años
Puntos: 0
Respuesta: Prohibir extensiones en upload php

pues no ha funcionado. he probado a subir un .exe y me lo ha permitido.
no se exactamente como poderlo filtrar pero os puedo dar el nombre del programa de donde tengo el codigo por si os orienta.

El programa se llama Feng Office. Y en la parte de documentos tiene un upload el cual quiero filtrar para que no se puedan subir .exe, .com... etc.

He preguntado en el foro del programa pero no hay contestación y como mirando el codigo del programa encontré la parte que está comentada y el archivo php que os he puesto pues pensé que sería mas facil... pero parece que no.

De todas formas en el programa pone textualmente debajo del botón upload "Puede cargar archivos de cualquier tipo. El tamaño máximo permitido para cargar archivos es 500 MB".

Es decir, que el tamaño de subida lo he modificado en el php.ini facilmente... por tanto intuyo que el tipo de archivo tambien se puede si no el programa no mostraría nada.

A ver si consigo filtrarlo porque si no vaya fallo...

Un saludo y gracias.
  #13 (permalink)  
Antiguo 20/05/2010, 08:03
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Prohibir extensiones en upload php

En ese script hay una funcion llamada asi "download_file" en ninguna linea hay algo que diga "upload_file" "upload"

Revisa que no tengas un archivo para subir y otro para bajar.

Mientra voy a ver si averiguo algo.

Aca hay algo que te puede ayudar:
http://fengoffice.com/web/wiki/doku.php/installation

Saludos..!

Última edición por wiwi74; 20/05/2010 a las 08:15
  #14 (permalink)  
Antiguo 20/05/2010, 12:05
 
Fecha de Ingreso: abril-2009
Mensajes: 11
Antigüedad: 15 años
Puntos: 0
Respuesta: Prohibir extensiones en upload php

Muchas gracias wiwi74.

Yo tambien sigo buscando información. Incluso he posteado en sus foros...

A ver si conseguimos que tire.

Saludos.

Etiquetas: upload, extension
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:10.