jueves, 17 de marzo de 2011

SQL Inyección con PHP. PARTE I

Hoy estaba testeando una aplicación que estoy desarrollando; ya saben, la típica que la interfaz esta hecha para todo menos para que el usuario de click en donde nunca jamas debe de dar click simplemente por que no es obvio no es razonable no es intuitivo, pero el usuario hace el click y truena el sistema, la verdad esto es molesto pero muy necesario hacer este tipo de pruebas para que cuando liberes tu aplicacion tenga lo menos posible de errores o caídas,.

Este fin de semana platique con mi cuñada y le mostré mi aplicación le pedi de favor que interactuara con ella y al cabo de tiempo me dice "que pasa si en lugar de guardar todos dejo este sin seleccionar" increíblemente no había pensado en eso, estaba tan preocupado por otros aspectos que no había colocado una validación en los campos de un formulario; seguido de esto me fui a mi casa y estuve pensando que así como deje de hacer esa validacion sencilla de campos deberían de existir mas bugs en mi aplicacion, de esta forma supe que necesitaba poner atención.






Navegando con el buen amigo Google y buscando vulnerabilidades de PHP+Mysql, me encontré con la Inyeccion SQL, pero ¿que es eso?, según Wikipedia:
Inyección SQL es un método de infiltración de código intruso que se vale de una vulnerabilidad informática presente en una aplicación en el nivel de validación de las entradas para realizar consultas a una base de datos.
En pocas palabras, la inyeccion SQL es como su nombre lo dice una inyección de código sql en una consulta previamente definida, casi siempre con el objeto de tomar información de una base de datos llegando a conseguir un user y un password para poder manipular totalmente una base de datos, para los que entienden un poco de esto habrán pensado que es realmente delicado, si nuestra aplicacion maneja información sensible para la empresa en donde se esta desarrollando es sumamente importante dotar de mayor seguridad a nuestras aplicaciones, tratare de explicar como entiendo lo que es la inyección sql a continuación un ejemplo; Supongamos que tenemos una url así:

http://mipagina.com/viewrentas.php?iden=2

Ahora bien necesitamos observar bien la url, en ella nos muestra información importante de como podría estar haciendo el programador la consulta a la base de datos llegando al siguiente query:

$sql = 'SELECT * FROM clientes
WHERE personas.id = '.$_GET['iden'];


La query anterior selecciona todos los campos de la tabla clientes donde id de los clientes sea igual a 2(esto segun nuestra url). La consulta anterior es claramente vulnerable a inyecciones SQL, ¿Por que?, eso lo tratare de explicar en mi próxima entrada.


SQL Inyección con PHP. PARTE II

No hay comentarios:

Publicar un comentario