Inyeccion de sql

Páginas: 8 (1830 palabras) Publicado: 20 de septiembre de 2010
-------------------------------------------------
Inyección SQL
Inyección SQL es una vulnerabilidad informática en el nivel de la validación de las entradas a la base de datos de una aplicación. El origen es el filtrado incorrecto de las variables utilizadas en las partes del programa con código SQL. Es, de hecho, un error de una clase más general de vulnerabilidades que puede ocurrir encualquier lenguaje de programación o de script que esté incrustado dentro de otro.
-------------------------------------------------
Descripción
Una inyección SQL sucede cuando se inserta o "inyecta" un código SQL "invasor" dentro de otro código SQL para alterar su funcionamiento normal, y hacer que se ejecute maliciosamente el código "invasor" en la base de datos.
La inyección SQL es un problemade seguridad informática que debe ser tomado en cuenta por el programador para prevenirlo. Un programa hecho con descuido, displicencia, o con ignorancia sobre el problema, podrá ser vulnerable y la seguridad del sistema puede quedar ciertamente comprometida. Esto puede suceder tanto en programas ejecutándose en computadores de escritorio, como en páginas Web, ya que éstas pueden funcionar medianteprogramas ejecutándose en elservidor que las aloja.
La vulnerabilidad puede ocurrir cuando un programa "arma" descuidadamente una sentencia SQL, con parámetros dados por el usuario, para luego hacer una consulta a una base de datos. Dentro de los parámetros dados por el usuario podría venir el código SQL inyectado.
Al ejecutarse esa consulta por la base de datos, el código SQL inyectado tambiénse ejecutará y podría hacer un sinnúmero de cosas, como insertar registros, modificar o eliminar datos, autorizar accesos e, incluso, ejecutar código malicioso en el computador.
Asumiendo que el siguiente código está en una aplicación web y que existe un parámetro "nombreUsuario" que contiene el nombre de usuario que nosotros le demos, la inyección SQL es posible:-------------------------------------------------
consulta := "SELECT * FROM usuarios WHERE nombre = '" + nombreUsuario + "';"
Si el usuario escribe su nombre, digamos "Alicia", nada anormal sucedería, la aplicación generaría una sentencia SQL similar a la siguiente, que es perfectamente correcta, en donde se seleccionaría al usuario "Alicia":
-------------------------------------------------SELECT * FROM usuarios WHERE nombre = 'Alicia';
Pero si un usuario malintencionado escribe como nombre de usuario:
"Alicia'; DROP TABLE usuarios; SELECT * FROM datos WHERE '-' = '-", se generaría la siguiente consulta SQL, (el color verde es lo que pretende el programador, el azul es el dato, y el rojo, el código SQL inyectado):
-------------------------------------------------SELECT * FROM usuarios WHERE nombre = 'Alicia';
-------------------------------------------------
DROP TABLE usuarios;
-------------------------------------------------
SELECT * FROM datos WHERE '-' = '-';
La base de datos ejecutaría la consulta en orden, seleccionaría el usuario 'Alicia', borraría la tabla 'usuarios' y seleccionaría datos que quizá no estándisponibles para los usuarios web comunes. En resumen, cualquier dato de la base de datos está disponible para ser leído o modificado por un usuario malintencionado.
Nótese por qué se llama "Inyección" SQL. Si observamos el código malicioso, de color rojo, vemos que está en el medio del código bueno, el verde. El código rojo ha sido "inyectado" dentro del verde.-------------------------------------------------
Ejemplos
La inyección SQL es fácil de evitar en la mayoría de los lenguajes de programación que desarrollan aplicaciones web.
Ruby on Rails
En Ruby on Rails, las consultas son verificadas automáticamente por cualquiera de los métodos de búsqueda incluidos. Por ejemplo:
Project.find(:all, :conditions => ["name = ?", params[:name]])
# o...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Inyección de SQL
  • INYECCIÓN SQL
  • Inyeccion sql
  • Introducción A Las Técnicas De Inyección Sql
  • Inyección sql
  • Inyeccion Sql
  • Inyecciones sql
  • Inyección sql

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS