Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: jalbtercero en 6 Marzo 2016, 17:27 pm



Título: restriccion de arvhivos
Publicado por: jalbtercero en 6 Marzo 2016, 17:27 pm
tengo este codigo en el que se supones que solo se puede subir rar zip odt y pdf. Pero siempre me da error de que el tamaño es demasiado grande o no esta permitido y solo subo un odt de 16kb

Código
  1. <?php
  2. if(isset($_POST['boton'])) {
  3.      if ((($_FILES["archivo-a-subir"]["type"] == "file/odt")
  4.      || ($_FILES["archivo-a-subir"]["type"] == "file/pdf")
  5.      || ($_FILES["archivo-a-subir"]["type"] == "file/rar")
  6.      || ($_FILES["archivo-a-subir"]["type"] == "file/zip"))
  7.      && ($_FILES["archivo-a-subir"]["size"] < 250000000))
  8. {
  9.  
  10. $target_path = "subidas/";
  11. $target_path = $target_path . basename( $_FILES['archivo-a-subir']['name']);
  12. if(move_uploaded_file($_FILES['archivo-a-subir']['tmp_name'], $target_path))
  13. {
  14.                require("connect_db.php");
  15.                session_start();
  16.                $nombre=$_SESSION["usuario"];
  17.                $desc=$_POST['desc'];
  18.                $direccion='subidas/'.basename( $_FILES['archivo-a-subir']['name']);
  19.                $pass=rand(0,1000000000);
  20.                mysql_query("INSERT INTO archivos VALUES('$nombre','$desc','$direccion','$pass')");
  21.                mysql_close($link);
  22. echo "El archivo ". basename( $_FILES['archivo-a-subir']['name'])." ha sido subido exitosamente!";
  23. }
  24. else
  25. {
  26. echo "Hubo un error al subir tu archivo! Por favor intenta de nuevo.";
  27. }
  28.  
  29.  
  30.  
  31.  
  32.  
  33. } else {
  34. echo "El tamaño del archivo no esta permitido o el archivo esta prohibido";
  35. }
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44. }
  45.  
  46.  


Título: Re: restriccion de arvhivos
Publicado por: engel lex en 6 Marzo 2016, 17:39 pm
solo para ayudarte a esclarecer el hecho que está fallando, agrega al else

Código
  1. echo "<pre>";
  2. var_dump($_FILES);
  3. echo "</pre>";


Título: Re: restriccion de arvhivos
Publicado por: #!drvy en 6 Marzo 2016, 17:42 pm
Los Media Types que tienes son incorrectos.

Código
  1. <?php
  2. if(isset($_POST['boton'])) {
  3.      if ((($_FILES["archivo-a-subir"]["type"] == "application/odt")
  4.      || ($_FILES["archivo-a-subir"]["type"] == "application/pdf")
  5.      || ($_FILES["archivo-a-subir"]["type"] == "application/x-rar-compressed")
  6.      || ($_FILES["archivo-a-subir"]["type"] == "application/zip"))
  7.      && ($_FILES["archivo-a-subir"]["size"] < 250000000))
  8. {

https://en.wikipedia.org/wiki/Media_type
http://www.freeformatter.com/mime-types-list.html

Para ver el media type de un archivo, simplemente imprimelo antes de tomar cualquier acción.

Código
  1. <?php
  2. if(isset($_FILES['archivo-a-subir']['type'])){
  3.    print_r($_FILES['archivo-a-subir']['type']);
  4.    die();
  5. }

Saludos


Título: Re: restriccion de arvhivos
Publicado por: jalbtercero en 6 Marzo 2016, 18:05 pm
solo para ayudarte a esclarecer el hecho que está fallando, agrega al else

Código
  1. echo "<pre>";
  2. var_dump($_FILES);
  3. echo "</pre>";


Gracias me ayudo mucho

por cierto alguin subio esto a mi pagina:

Código
  1.  
  2. <?php
  3.  
  4. /**
  5.  * @file
  6.  * Handles incoming requests to fire off regularly-scheduled tasks (cron jobs).
  7.  */
  8.  
  9. /**
  10.  * Root directory of Drupal installation.
  11.  */
  12. define('DRUPAL_ROOT', getcwd());
  13.  
  14. include_once DRUPAL_ROOT . '/includes/bootstrap.inc';
  15. drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
  16.  
  17. if (!isset($_GET['cron_key']) || variable_get('cron_key', 'drupal') != $_GET['cron_key']) {
  18.  watchdog('cron', 'Cron could not run because an invalid key was used.', array(), WATCHDOG_NOTICE);
  19.  drupal_access_denied();
  20. }
  21. elseif (variable_get('maintenance_mode', 0)) {
  22.  watchdog('cron', 'Cron could not run because the site is in maintenance mode.', array(), WATCHDOG_NOTICE);
  23.  drupal_access_denied();
  24. }
  25. else {
  26.  drupal_cron_run();
  27. }
  28.  

no,lo entiendo del todo


Título: Re: restriccion de arvhivos
Publicado por: MinusFour en 6 Marzo 2016, 18:21 pm
No puedes comprobar si un archivo es realmente una imagen/pdf/oct, etc en base a ese mime type, porque cualquiera puede enviar un Content-Type falso.

Citar
$_FILES['userfile']['type']
The mime type of the file, if the browser provided this information. An example would be "image/gif". This mime type is however not checked on the PHP side and therefore don't take its value for granted.