Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Naimaderis en 5 Marzo 2014, 04:25 am



Título: Como hacer para que los usuarios puedan subir a mi web
Publicado por: Naimaderis en 5 Marzo 2014, 04:25 am
Hola , soy relativamente nuevo en la creacion web , y lo que quiero hacer es que los usuarios puedan subir textos a mi pagina , osea como este tema que estoy creando ahora , pero que aparezca en mi web , nose si me explico bien


Título: Re: Como hacer para que los usuarios puedan subir a mi web
Publicado por: ivancea96 en 5 Marzo 2014, 04:40 am
Upload1.html:
Código
  1. <form method="post" action="imagenes/upload.php" enctype="multipart/form-data"><!-- Pasar el archivo por method POST -->
  2. <input type="file" size="75" name="file" id="file">
  3. <input type="submit" value="Subir">
  4. </form>

Upload.php:
Código
  1. <?php
  2. header("Content-Type: text/html;charset=utf-8");
  3. $allowedExts = array("gif", "jpeg", "jpg", "png", "txt");
  4. $temp = explode(".", $_FILES["file"]["name"]);
  5. $extension = end($temp);
  6. if ((($_FILES["file"]["type"] == "image/gif")
  7. || ($_FILES["file"]["type"] == "image/jpeg")
  8. || ($_FILES["file"]["type"] == "image/jpg")
  9. || ($_FILES["file"]["type"] == "image/pjpeg")
  10. || ($_FILES["file"]["type"] == "text/plain")
  11. || ($_FILES["file"]["type"] == "image/x-png")
  12. || ($_FILES["file"]["type"] == "image/png"))
  13. && in_array($extension, $allowedExts))/** Con esto compruebas si el tipo de archivo está permitido, y si la extensión está permitida **/
  14.   {
  15.   if ($_FILES["file"]["error"] > 0)
  16.     {
  17.     echo "Código de error: " . $_FILES["file"]["error"] . "<br>";
  18.     }
  19.   else
  20.     {
  21.     if (file_exists("/" . $_FILES["file"]["name"]))
  22.       {
  23.       echo $_FILES["file"]["name"] . " ya existe. ";
  24.       }
  25.     else
  26.       {
  27.       move_uploaded_file($_FILES["file"]["tmp_name"], "" . $_FILES["file"]["name"]);/** Guardar el archivo **/
  28.       }
  29.     }
  30.   }
  31. else
  32.   {
  33.   echo "Archivo inválido.";
  34.   }
  35. ?>
  36. </body>


Te lo comenté un poco. Ese es el código que tengo yo en mi web. Lo reduje lo máximo posible xD

Si tienes alguna otra duda, pregunta :p


Título: Re: Como hacer para que los usuarios puedan subir a mi web
Publicado por: Maurice_Lupin en 19 Marzo 2014, 16:08 pm
Una consulta ivancea96, también implementaste seguridad pues según leo te pueden subir un  PHP Shells. Si la tienes, puedes comentarnos?.

Saludos.


Título: Re: Como hacer para que los usuarios puedan subir a mi web
Publicado por: ivancea96 en 19 Marzo 2014, 16:16 pm
Bueno. Haí hay un if:

Código
  1. if ((($_FILES["file"]["type"] == "image/gif")
  2.  
  3. || ($_FILES["file"]["type"] == "image/jpeg")
  4.  
  5. || ($_FILES["file"]["type"] == "image/jpg")
  6.  
  7. || ($_FILES["file"]["type"] == "image/pjpeg")
  8.  
  9. || ($_FILES["file"]["type"] == "text/plain")
  10.  
  11. || ($_FILES["file"]["type"] == "image/x-png")
  12.  
  13. || ($_FILES["file"]["type"] == "image/png"))
  14.  
  15. && in_array($extension, $allowedExts))

Los "$_FILES["file"]["type"]" coprueban que tipo de archivo me están subiendo.
La segunda parte, "in_array" comprueba si la extensión del archivo está entre las permitidas.


Título: Re: Como hacer para que los usuarios puedan subir a mi web
Publicado por: #!drvy en 19 Marzo 2014, 23:42 pm
Como nota sobre todo esto, recordar que a veces, por muy "seguro" que tengas el script de subida, te pueden meter una shell y que no te enteres.

Como referencia a lo que hablo dejo este link:

Tema: shell archivo.php.jpg se ejecuta sin problema
http://foro.elhacker.net/nivel_web/shell_archivophpjpg_se_ejecuta_sin_problemas-t410407.0.html

Saludos


Título: Re:
Publicado por: ivancea96 en 20 Marzo 2014, 08:17 am
Siempre puedes analizar el nombre del archivo. O el contenido incluso.

Enviado desde mi ST21i mediante Tapatalk


Título: Re: Como hacer para que los usuarios puedan subir a mi web
Publicado por: engel lex en 26 Marzo 2014, 13:27 pm
#!drvy por otro lado al subirse el archivo puedes revisar los bytes iniciales y finales para asegurarte que sea un formato valido, y renombrarlo con la extensión que deba tener... incluso puedes analizarlo un poco más (por lo menos las imágenes) y pasarlas por GD y cosas así... dudo que con estas medidas pase una shell y siga siendo ejecutable


Título: Re: Como hacer para que los usuarios puedan subir a mi web
Publicado por: karmany en 26 Marzo 2014, 22:06 pm
Como te comentan, ten cuidado con los archivos que te suben.

¿Por qué no te creas un foro? ¿POr qué no creas, si no, un blog y dejas los comentarios abiertos? o usas un CMS.

No permitas subir archivos y menos a cualquiera.


Título: Re: Como hacer para que los usuarios puedan subir a mi web
Publicado por: EFEX en 27 Marzo 2014, 10:10 am
Tambien podrias utilizar una api de terceros.

Subir archivos con dropbox y para imagenes imgur es bastante descente(siempre que el contenido que suban los ususarios no viole los terminos y servicio de la api).