SQL Injection en PHP

January 24th, 2008 | by necudeco |
  1. ¿ Que es la Inyeccion SQL ?
    Inyeccion SQL es como se llama al metodo por el cual un visitante de nuestro sistema Web puede modificar las consultas SQL enviadas a nuestra base de datos. Debemos recordar que las bases de datos por lo general estan protegidas y solo permiten el acceso o la ejecucion de sentencias sql que vengan desde la aplicacion Web.
  2. ¿ Cuales son los peligros de la Inyeccion SQL ?
    Su principal peligro radica, en que ya no es necesario averiguar la clave de acceso al motor de base de datos, e inclusive tampoco al sistema Web.
  3. ¿ Que puede lograrse con los ataques de Inyeccion SQL ?
    Se puede obtener informacion del sistema, como usuarios, claves, correos, pedidos, etc. Otro ataque que se puede lograr es tan simple como borrar la data. Aun en un sistema con backups regulares, siempre es posible haber perdido la ultima informacion ingresada.
  4. ¿ Como puedo evitar que mi sitio sea un objetivo de un ataque de Inyeccion SQL ?
    La mejor forma es no confiar en los datos ingresados por el usuario y no armar las consultas SQL simplemente concatenando cadenas.

Un ejemplo:


<?php
    $conn = ADONewConnection(’mysql’);
    ….
    $rs = $conn->Execute(”select * from tablename where id=?”,array($id));

    foreach ( $rs as $item )
    {  
       ….
    }

?>

Como pueden ver, al crear la sentencia SQL le paso el parametro de entrada a traves de las funciones de adodb, y no simplemente concatenandolo. Con esto adodb, se encarga de filtrar caracteres no validos. Estos caracteres no validos son la clave para los ataques de Inyeccion SQL.

Technorati Tags: ,

Powered by ScribeFire.

Post a Comment