2 de junio de 2009

PHP: Evitando ataques de MySql injection validando los contenidos de texto

Un ataque MySql injection es un tipo de ataque en el cual a través de un agujero de seguridad el atacante consigue ejecutar código sql dentro de nuestro servidor, por ejemplo, un bonito drop table para ir liquidando una a una todas nuestras tablas.

Para ello una de las vías habituales de entrada suelen ser los formularios que no validan los datos vía servidor antes de ejecutar las consultas de base de datos.

Ya hemos hablado en este blog hace algún tiempo de como validar los datos de tipo numérico, ahora os voy a mostrar un pequeño sistema para evitar que el carácter " o el carácter ' os den algún dolor de cabeza.

Este post sólo es útil para los datos de tipo string (o sea, texto). Cuando vayamos a generar una consulta sql deberemos primero ejecutar la función addslashes con ellos, por ejemplo:

$cadena = "O'Donell";
$cadena = addslashes($cadena); // ahora $cadena="O\'Donell"

Más adelante cuando queramos convertir una cadena transformada por addslashes tenemos que utilizar stripslashes. Sigamos con el ejemplo:

$cadena = stripslashes($cadena); // ahora $cadena="O'Donell"

Muy útil, aunque no cubre el 100% de los intentos de ataque.

No hay comentarios: