Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: dimitrix en 16 Mayo 2011, 23:19 pm



Título: Subir un fichero y relacionarlo en la base de datos
Publicado por: dimitrix en 16 Mayo 2011, 23:19 pm
Vamos a ver, quiero subir un ficho y si se llama imagen.gif que se suba como 'rand().imagen.fig

Cogiendo un código ya creado para ahorrar tiempo, tengo:

El formulario aquí:
Código
  1. <form action="<?=$PHP_SELF?>" method="post" enctype="multipart/form-data" name="form1">
  2.  <p align="center">Archivo
  3.   <input name="archivo" type="file" id="archivo">
  4.  </p>
  5.  <p align="center"><input name="boton" type="submit" id="boton" value="Enviar"></p>
  6. </form>

En cuanto al PHP que lo guarda:

Código
  1. <?
  2. if($boton) {
  3.    if (is_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name'])) {
  4.      copy($HTTP_POST_FILES['archivo']['tmp_name'], $HTTP_POST_FILES['archivo']['name']);
  5.      $subio = true;
  6.    }
  7.  
  8. if($subio) {
  9.    echo "El archivo subio con exito";
  10. } else {
  11.    echo "El archivo no cumple con las reglas establecidas";
  12. }
  13. die();
  14. }
  15. ?>


El problema es que quiero que se guardar en una carpeta llamada 'img' y que tenga lo del nombre aleatorio, pero no se como hacer eso sin estropearlo.

Thanks.


Título: Re: Subir un fichero y relacionarlo en la base de datos
Publicado por: RedZer en 16 Mayo 2011, 23:36 pm
checate
formulario para upload imagen
Código
  1. <form id="signupform" name="formulario" autocomplete="off" action="insertar.php" method="post" enctype="multipart/form-data">
  2. <input type="file" name="file"  class="required"/>
  3. <input type="submit" name="button" id="button" value="Enviar" />
  4. </form>
  5.  
  6.  

pagina que recibe
Código
  1.  
  2. <?php
  3.  
  4.                             $clave=rand(5, 15);
  5.     $destino='img';//nombre de la carpeta
  6.                             $imagen= $_FILES['file']['name'];
  7.                             $tipo_archivo = $_FILES['file']['type'];
  8.                             $tamano_archivo = $_FILES['file']['size'];
  9.                             $nomimag=$clave.'.jpg';
  10.  
  11. if (strpos($tipo_archivo, "jpeg") || strpos($tipo_archivo, "jpg" ))
  12.        {
  13.  
  14.  if (move_uploaded_file($_FILES['file']['tmp_name'],$destino.'/'.$nomimag))
  15.        {  
  16. //aqui instuccion sql
  17.  
  18.                               }
  19.  
  20. }
  21.  
  22. ?>
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  

NOTA:crea una carptea llamda img en done estes guardando tus archivos


Título: Re: Subir un fichero y relacionarlo en la base de datos
Publicado por: dimitrix en 16 Mayo 2011, 23:51 pm
Gracias RedZer.


Título: Re: Subir un fichero y relacionarlo en la base de datos
Publicado por: ~ Yoya ~ en 16 Mayo 2011, 23:52 pm
Te recomiendo que crees un buen filtro porque te pueden subir una PHP shell.


Título: Re: Subir un fichero y relacionarlo en la base de datos
Publicado por: RedZer en 16 Mayo 2011, 23:57 pm
Te recomiendo que crees un buen filtro porque te pueden subir una PHP shell.
con el code que puse??


Título: Re: Subir un fichero y relacionarlo en la base de datos
Publicado por: ~ Yoya ~ en 17 Mayo 2011, 00:14 am
Si compañero, el código es vulnerable.

$_FILES['file']['type'];

Contiene el valor de Contend-Type: y es modificable. Asi que puede ser que estés subiendo un archivo PHP pero le indicas que es un archivo de imagen y lo dejaría subir.


Título: Re: Subir un fichero y relacionarlo en la base de datos
Publicado por: RedZer en 17 Mayo 2011, 00:18 am
Si compañero, el código es vulnerable.

$_FILES['file']['type'];

Contiene el valor de Contend-Type: y es modificable. Asi que puede ser que estés subiendo un archivo PHP pero le indicas que es un archivo de imagen y lo dejaría subir.

 :o lo desconocia gracias ~ Yoya ~ tendras un ejemplo a la mano de como seria el filtro ?


Título: Re: Subir un fichero y relacionarlo en la base de datos
Publicado por: ~ Yoya ~ en 17 Mayo 2011, 00:22 am
Puedes leer este POST que lo escribo SH4V:

PHP upload security (http://foro.elhacker.net/nivel_web/php_upload_security-t277601.0.html)


Título: Re: Subir un fichero y relacionarlo en la base de datos
Publicado por: RedZer en 17 Mayo 2011, 00:50 am
Puedes leer este POST que lo escribo SH4V:

PHP upload security (http://foro.elhacker.net/nivel_web/php_upload_security-t277601.0.html)
realmente desconocia esto. gracias por la info ~ Yoya ~