Inyeccion de codigo SQL

Páginas: 11 (2528 palabras) Publicado: 31 de julio de 2014

La inyección de código SQL es un ataque en el cual se inserta código malicioso en las cadenas que posteriormente se pasan a una instancia de SQL Server para su análisis y ejecución. Todos los procedimientos que generan instrucciones SQL deben revisarse en busca de vulnerabilidades de inyección de código, ya que SQL Server ejecutará todas las consultas recibidas que sean válidas desde el puntode vista sintáctico. Un atacante cualificado y con determinación puede manipular incluso os datos con parámetros.
La forma principal de inyección de código SQL consiste en la inserción directa de código en variables especificadas por el usuario que se concatenan con comandos SQL y se ejecutan. Existe un ataque menos directo que inyecta código dañino en cadenas que están destinadas a almacenarseen una tabla o como metadatos. Cuando las cadenas almacenadas se concatenan posteriormente en un comando SQL dinámico, se ejecuta el código dañino.
El proceso de inyección consiste en finalizar prematuramente una cadena de texto y anexar un nuevo comando. Como el comando insertado puede contener cadenas adicionales que se hayan anexado al mismo antes de su ejecución, el atacante pone fin a lacadena inyectada con una marca de comentario "--". El texto situado a continuación se omite en tiempo de ejecución.
En el siguiente script se muestra una sencilla inyección de código SQL. El script crea una consulta SQL concatenando cadenas no modificables con una cadena especificada por el usuario:
var Shipcity;
ShipCity = Request.form ("ShipCity");
var sql = "select * from OrdersTable whereShipCity = '" + ShipCity + "'";
Se le pide al usuario que escriba el nombre de una ciudad. Si el usuario especifica Redmond, la consulta ensamblada por el script presenta un aspecto similar al siguiente:
SELECT * FROM OrdersTable WHERE ShipCity = 'Redmond'
Sin embargo, suponga que el usuario especificase lo siguiente:
Redmond'; drop table OrdersTable--
En este caso, la siguiente consulta laensambla el script:
SELECT * FROM OrdersTable WHERE ShipCity = 'Redmond';drop table OrdersTable--'
El punto y coma (;) denota el final de una consulta y el principio de otra. El guión doble (--) indica que el resto de la línea actual es un comentario y debe omitirse. Si el código modificado es sintácticamente correcto, el servidor lo ejecutará. Cuando SQL Server procese esta instrucción, SQL Serverseleccionará en primer lugar todos los registros de OrdersTable donde ShipCity sea Redmond. A continuación, SQL Server quitará OrdersTable.
Siempre y cuando el código SQL inyectado sea sintácticamente correcto, no será posible detectar alteraciones mediante programación. Por ello, debe validar todos los datos especificados por el usuario y revisar cuidadosamente el código que ejecute comandos SQLconstruidos en el servidor que utilice. Las prácticas recomendadas de codificación se describen en las siguientes secciones de este tema.
Validar todos los datos especificados por el usuario

Valide siempre los datos especificados por el usuario mediante comprobaciones de tipo, longitud, formato e intervalo. A la hora de implementar medidas de precaución frente a la especificación de datosdañinos, tenga en cuenta la arquitectura y los escenarios de implementación de la aplicación. Recuerde que los programas diseñados para ejecutarse en un entorno seguro pueden copiarse en un entorno no seguro. Las sugerencias que se muestran a continuación deben considerarse prácticas recomendadas:
No haga suposiciones sobre el tamaño, tipo o contenido de los datos que recibirá la aplicación. Porejemplo, debe hacer la siguiente evaluación:
Cómo se comportará la aplicación si un usuario (malicioso o no) especifica un archivo MPEG de 10 megabytes cuando la aplicación espera un código postal.
Cómo se comportará la aplicación si se incrusta una instrucción DROP TABLE en un campo de texto.
Compruebe el tamaño y el tipo de los datos especificados y aplique unos límites adecuados. Esto puede...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Inyección Sql
  • Inyección de SQL
  • INYECCIÓN SQL
  • Inyeccion sql
  • Introducción A Las Técnicas De Inyección Sql
  • Inyección De Codigo O Comandos En El Servidor:
  • Codigo sql de biblioteca
  • Inyección sql

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS