Underc0de

Programación Web => Back-end => Mensaje iniciado por: Mavis en Julio 20, 2011, 02:39:35 AM

Título: Evitar LFI de forma fácil
Publicado por: Mavis en Julio 20, 2011, 02:39:35 AM
CitarPues antiguamente filtraba todo atraves de expresiones regulares pero se me ocurrió un método muchisimo mas efectivo y mas corto.

Fácil, córto, límpio, sencillo.... a mas de alguien le va a servir, saludos.

Código (php) [Seleccionar]
if(in_array(($mod= './modules/'.$_GET['module'],'/index.php'), glob('./modules/*/index.php'))){
   include($mod);
}else{
   echo 'El módulo no existe.';
}


Autor: WHK
Fuente: EHN
Título: Re:Evitar LFI de forma fácil
Publicado por: Xt3mP en Julio 20, 2011, 03:29:58 AM
Es una forma muy buena, pero para los nuevos podrían seguir esto:

Código (php) [Seleccionar]

<?php
$path_contenedor 
'path/';
$archivo $_GET['file'];
if(!@
file_exists($path_contenedor.$archivo))
{
    echo 
'El archivo no existe';
}else{
    require_once(
$path_contenedor.$archivo);
}
?>



También en tu ejemplo para que entiendan sería:
Código (php) [Seleccionar]

<?php
$path_contenedor 
'path/';
$archivo $_GET['file'];
$archivos = array('archivo1.php''archivo2.php');
if(!
in_array($archivo$archivos))
{
    echo 
'El archivo no existe';
}else{
    require_once(
$path_contenedor.$archivo);
}
?>



Por otro lado, si no quieres dejar expuesto que archivo incluyes puedes hacer algo así:

Código (php) [Seleccionar]

<?php
$archivo 
$_GET['file']; //xt3mp.mx?file=usuarios
switch($archivo)
{
    case 
'usuarios':
    require_once(
'users.php');
    break;

    case 
'registro':
    require_once(
'register.php');
    break;

    default;
    echo 
'El archivo no existe';
}
?>



Saludos.
Título: Re:Evitar LFI de forma fácil
Publicado por: ~ Yoya ~ en Agosto 01, 2011, 01:18:33 AM
La opción que posteo Sthefano02, el código que escribió WHK.

Sirve para evitar LFI pero es para un caso en especifico, el código al parecer es funciona para algún CMS pero no para todos porque ninguno tiene la misma estructura.




Yo usaria la ultima opción de Xt3mP, solo incluiría los archivos que deseo que se incluyan. Aunque el primer código de Xt3mP es vulnerable, me imagino que seria un ejemplo.

Saludos.
Título: Re:Evitar LFI de forma fácil
Publicado por: Xt3mP en Agosto 01, 2011, 01:49:12 AM
Así es, el primer código les permite navegar ya que no delimito la raíz de la carpeta (./) pero solo era para un ejemplo, gracias por la anotación.

Saludos.