ITC

Escuela Tecnológica- Instituto Técnico Central De La Salle

martes, 4 de junio de 2013

SQL INJECTION

Que es?
Un SQL Injection se basa en un fallo en la comunicación entre el usuario final y la base de datos. Consiste en un ataque contra un Gestor de Base de Datos Relacionales que aprovecha la vulnerabilidad de una aplicación. La vulnerabilidad es permitir mandar instrucciones SQL adicionales a partir de un campo o un parametro de entradas "inyectadas". Al estar vulnerables se puede lograr la finalidad de un ataque.

Como hacerlo?
Para ingresar a una pagina web nos podemos identificar con un usuario 'admin' es el mas común  y en el password ponemos la siguiente sentencia: ‘ OR ”=’
Con esta consulta engañamos al sistema ya que forzamos una comparación de “nada” es igual a “nada” lo que nos da acceso al sistema.
Al igual que la anterior consulta se pueden intentar inyectar unas cuantas más forzando comparaciones simples (OR 1=1) o intentando comentar el código con “//” o “/* */”

Evitar un SQL Injection
Se deben controlar los datos de  entrada, no se deben confiar en las entradas de los usuarios, no utilizar secuencias SQL construidas dinamicamente, no utilizar cuentas con privilegios administrativos.
filtrar las consultas con mysql_real_escape_string()
$u=mysql_real_escape_string($_POST['usuario']);
$p=mysql_real_escape_string($_POST['password']);
SELECT * FROM users WHERE user='$u' AND password='$p'

mysql_real_escape_string() llama a la función de la biblioteca MySQL mysql_real_escape_string, la cual coloca barras invertidas antes de los siguientes caracteres: \x00, \n, \r, \, ‘, ” y \x1a

0 comentarios :

Publicar un comentario

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Affiliate Network Reviews