Como hacer para que los usuarios puedan subir a mi web

Iniciado por Naimaderis, 5 Marzo 2014, 04:25 AM

0 Miembros y 2 Visitantes están viendo este tema.

Naimaderis

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

ivancea96

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

Maurice_Lupin

Una consulta ivancea96, también implementaste seguridad pues según leo te pueden subir un  PHP Shells. Si la tienes, puedes comentarnos?.

Saludos.
Un error se comete al equivocarse.

ivancea96

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.

#!drvy

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

ivancea96

Siempre puedes analizar el nombre del archivo. O el contenido incluso.

Enviado desde mi ST21i mediante Tapatalk

engel lex

#!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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

karmany

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.

EFEX

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