13 may. 2009

Inyección SQL

SQL es un acronimo de Structured Query Language, el cual es un lenguaje estándar de consulta estructurado para el manejo de base de datos relacionales, el mismo posee la característica de integrarse con cualquier otro lenguajes.


Los ataques mediante inyección SQL, se presentan en gran parte páginas web dinámicas, esta vulnerabilidad se presenta en la alteración del funcionamiento de las consultas mediante la modificación de los querys de consultas a la base de datos.


Veamos un ejemplo básico de estos ataques

Las páginas de acceso normalmente solicitan información del nombre de usuario y contraseña, al introducir de nombre y la contraseña nuestra consulta a la base de datos seria la siguiente:

select {campos} from {nombre_tabla} where usuario=$usuario and password=$contraseña

En esta sentencia la variable $usuario, es el nombre de usuario proporcionado y la variable $contraseña, representa la contraseña proporcionada por el usuario. La clausula where realizara el filtrado en la consulta a base de datos.

Suponiendo los siguientes valores:

$usuario='admin'
$contraseña='admin'

Nuestra instrucción sql quedaria de la siguiente forma:

select {campos} from {nombre_tabla} where usuario='admin' and password='admin'

Dicha consulta nos traerá un registro con los datos del usuario admin y ahi partir a de esto se proporcionara al acceso al sistema. Si alteramos los valores de las variables por los siguientes:

$usuario='admin'
$contraseña=' ‘ or ‘1′=’1'

Esta consulta nos devuelve registros con lo que el usuario entrará en nuestra Web sin tener permiso. Por otro lado puede ser que el usuario utilice estos trucos de inyección de SQL para ejecutar código arbitrario en nuestro servidor.

Medidas para evitar la inyección SQL

  • Se deberá limitar los permiso de los usuarios para la ejecución de sentencias. Por ejemplo utilizando un usuario distinto para las sentencias SELECT, DELETE, UPDATE.
  • Filtrar el valor de las variables reemplazando la aparición de ‘ por ‘’ (dos comillas simples).
  • Utilice procedimientos almacenados para el manejo de la base de datos .
Link de Interes

Guía rápida de inyecciones en bases de datos Mysql (Sql injection)

Inyección de código SQL

Introducción a SQL Injection (Inyección SQL)


0 comentarios:

Publicar un comentario

Twitter Delicious Facebook Favorites