Inyección SQL. Ejemplo

SQL Injection es una de las técnicas más utilizada para explotar vulnerabilidades de las bases de datos. La seguridad queda comprometida cuando no se filtra correctamente los literales de la cadena de entrada o variable de consulta.
Pongamos un ejemplo, se tiene un sitio WEB, con un formulario para la autenticación de usuarios, donde se pide normalmente Usuario y Contraseña, si introduces Usuario = pepito y Contraseña = 1234, la información es enviada al servidor, el cual suele consultar si el usuario existe en una tabla con una sentencia del tipo:

SELECT * FROM ‘USUARIOS’ WHERE USUARIO = ‘pepito’ AND CONTRASENYA = ‘1234’;

Si nos se tiene los caracteres especiales controlados, el usuario se pueden identificar con,

‘ or ‘1’ = ‘1

Ejecutándose en el servidor la sentencia,

SELECT * FROM ‘USUARIOS’ WHERE USUARIO = ” or ‘1’ = ‘1’ AND CONTRASENYA = ” or ‘1’ = ‘1’;

la condición de la sentencia se cumple produciéndose la autenticación.

Se puede utilizar además comentarios para bloquear el resto de la consulta tales como:

‘or  ‘1’ = ‘1 ‘-‘
‘or  ‘1’ = ‘1 ‘/ *’

Este tipo de ataques se pueden evitar filtrando antes de realizar la consulta los caracteres especiales. Existen funciones que realizan este trabajo, sólo hay que tenerlas en cuenta para desarrollar aplicaciones seguras. Por ejemplo, para PHP existe la función

mysql_real_escape_string()

utilizada antes de realizar la sentencia sobre las variables de entradas.

Software de auditoría para detectar es tipo de vulnerabilidades,

Paros Proxy
Acunetix

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Time limit is exhausted. Please reload the CAPTCHA.