Test Foro de elhacker.net SMF 2.1

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 (php) [Seleccionar]
<form method="post" action="imagenes/upload.php" enctype="multipart/form-data"><!-- Pasar el archivo por method POST -->
<input type="file" size="75" name="file" id="file">
<input type="submit" value="Subir">
</form>


Upload.php:
Código (php) [Seleccionar]

<?php
header
("Content-Type: text/html;charset=utf-8");
$allowedExts = array("gif""jpeg""jpg""png""txt");
 
$temp explode("."$_FILES["file"]["name"]);
$extension end($temp);
 if (((
$_FILES["file"]["type"] == "image/gif")
 || (
$_FILES["file"]["type"] == "image/jpeg")
 || (
$_FILES["file"]["type"] == "image/jpg")
|| (
$_FILES["file"]["type"] == "image/pjpeg")
|| (
$_FILES["file"]["type"] == "text/plain")
|| (
$_FILES["file"]["type"] == "image/x-png")
 || (
$_FILES["file"]["type"] == "image/png"))
 && 
in_array($extension$allowedExts))/** Con esto compruebas si el tipo de archivo está permitido, y si la extensión está permitida **/
   
{
   if (
$_FILES["file"]["error"] > 0)
     {
     echo 
"Código de error: " $_FILES["file"]["error"] . "<br>";
     }
   else
     {
     if (
file_exists("/" $_FILES["file"]["name"]))
       {
       echo 
$_FILES["file"]["name"] . " ya existe. ";
       }
     else
       {
       
move_uploaded_file($_FILES["file"]["tmp_name"], "" $_FILES["file"]["name"]);/** Guardar el archivo **/
       
}
     }
   }
 else
   {
   echo 
"Archivo inválido.";
   }
?>

</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 (php) [Seleccionar]
if ((($_FILES["file"]["type"] == "image/gif")

|| ($_FILES["file"]["type"] == "image/jpeg")

|| ($_FILES["file"]["type"] == "image/jpg")

|| ($_FILES["file"]["type"] == "image/pjpeg")

|| ($_FILES["file"]["type"] == "text/plain")

|| ($_FILES["file"]["type"] == "image/x-png")

|| ($_FILES["file"]["type"] == "image/png"))

&& 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).