ElTicus.com

Programación, lenguajes y recursos para programadores

artículo
Ataques de inyección de SQL
Error de omisión por parte del programador
Publicado por JL Fecha: 2006-12-04 01:20:00 Idioma: Español Tipo de documento: artículo
Descargar como PDF

Ataques de inyección de SQL

Ataques de inyección de SQL

 

Un ataque de inyección de SQL, es una de las maneras más fáciles de atacar un sitio Web. Dicho ataque se dirige a la parte medular de un sistema, que es la base de datos.

 

¿En qué consiste un ataque de inyección de SQL?

Consiste en la inclusión de código SQL dentro de las cajas de los formularios de tal manera que cambien la sentencia original diseñada por el programador por otra sentencia válida que realice alguna tarea “extra” diseñada por el atacante.

No es el objetivo de este artículo el proveer información que se pueda prestar para realizar un ataque, por lo que no se pondrán ejemplos de ataques, además de que es un tema bastante abordado en Internet.

 

¿Quién es el culpable de esta vulnerabilidad?

            En este caso,  el error no corresponde a los sistemas de bases de datos ni del sistema operativo, este es un error de omisión directamente achacable al desarrollador de la aplicación, el cual por ignorancia o por descuido no validó correctamente la entrada del usuario permitiéndole el acceso a la información confidencial.

 

¿Cuáles son los riesgos?

            Un ataque de inyección SQL puede estar dirigido a alguna de las siguientes tareas:

·        Brincarse la validación de entrada (contraseña)

·        Ver información directamente de las bases de datos sin autorización.

·        Agregar, Modificar o Borrar registros.

·        Eliminar toda la información de la base de datos o incluso la base de datos misma.

 

Recomendaciones para evitar los ataques:

  • Limitar el tamaño de las cajas de texto.
  • No enviar por GET información de autentificación ni sentencias de SQL
  • No mostrar bajo ningún concepto los nombres de las tablas o de los campos de la base de datos.
  • No olvidar quitar todo el código de depuración que pueda mostrar la sentencia SQL original.
  • No utilizar en sentencias de SQL información recibida de forma directa por los usuarios.
  • Estar siempre perceptivos a la posibilidad de un ataque.

 

Los ataques de inyección más simples pueden ser fácilmente bloqueados simplemente reemplazando las comillas por su versión codificada (\’ o \”) o cambiándolos por otro carácter, no obstante puede haber ataques que sean tan complejos como la imaginación del atacante y que no son fácilmente identificables, por lo que debemos procurar a toda costa evitar que los usuarios puedan tener acceso a información relativa a la arquitectura de nuestra información, entre menos conozcan, menos herramientas tendrán y más les dificultaremos el ataque.

 

Recomendación:

Si has sido victima de ataques de SQL, puedes tratar de identificar al culpable poniéndole una validación extra a tus formularios. Dicha validación consiste en verificar si dentro de las cadenas que se envían aparecen sentencias de SQL tradicionales, y en ese caso guardar en un registro la información de la fecha, hora, IP y todo lo que puedas averiguar del atacante. Eso te ayudará a darte una idea de la ubicación o incluso con algo de suerte podrías darte cuenta si es alguien conocido el que te ataca.

 

 




Nadie ha puesto ningún comentario todavía


Haz un comentario sobre este tema
Nombre email (no se muestra)
comentario:
Escribe las 2 letras que ves aquí: Imagen anti-spam =




No hay comentarios

Artículos relacionados:
código fuente Como ponerle un contador de visitas a tu sitio en menos de 5 minutos. Tip Como agregar un campo ID a una tabla y hacerlo llave primaria al mismo tiempo Recurso no clasificado Solución al error: Client does not support authentication protocol requested by server. Tip Como recuperar los primeros N caracteres de un campo de texto sin enters ni tabuladores. código fuente Generar una tabla HTML desde una Base de Datos MYSQL
Manual Aprende como funcionan los JOINS en SQL Recurso no clasificado Aprendiendo MySQL con PHP Tip Comando GRANT en Mysql Tip Algunos comandos útiles de MySQL: FLUSH PRIVILEGES Truco Conteo Condicionado en Mysql