Una de las técnicas de hacking más temidas por los administradores de bases de datos y los desarrolladores web es el “SQL injection”, la cual consiste en insertar o “inyectar” código malicioso en las sentencias SQL comúnmente utilizadas en gran cantidad de procesos en las aplicaciones actuales.
Hoy en día una aplicación web que no tenga acceso a una base de datos tiene muy poco que ofrecer competitivamente hablando, y quizás es por esta razón primordialmente que esta práctica es tan temida.
¿Cómo funciona? muy simple. Fijémonos en una sentencia SQL muy simple que toma un dato obtenido desde un formulario de búsqueda para obtener los datos coincidentes con dicha información creada en ASP y con una variable (userinput) que será cambiada en tiempo de ejecución por el contenido que inserte el usuario en dicho formulario:
"SELECT * FROM usuarios WHERE login = ' " & userinput & "'"
Al recibir el contenido que el usuario inserta en el campo del formulario como por ejemplo su login la sentencia queda como:
"SELECT * FROM usuarios WHERE login = 'admin'"
Pero que sucedería si el hacker en lugar de “admin” inserta un trozo de sentencia SQL como el siguiente:
'; DROP TABLE usuarios --
La respuesta es simple: La sentencia definitiva quedaría de la siguiente manera:
'SELECT * FROM usuarios WHERE login = '';DROP TABLE usuarios --"
Para quienes no tienen conocimientos básicos de SQL también es fácil entender que a partir de dicho momento habríamos perdido completamente el contenido de la tabla “usuarios” en nuestro sistema.
Este ejemplo anterior es solo uno de los muchos tipos diferentes de SQL injection que existen, sin embargo es uno de los más siniestros. La pregunta más importante es la que surge inmediatamente después de este ejemplo: ¿Cómo puedo saber si mi sitio web es vulnerable al SQL injection? Y si es así, ¿cómo puedo prevenir esta técnica de intrusión tan peligrosa?
Ambas preguntas van de la mano, sin embargo y aunque no es la única medida a ser tomada para evitar este tipo de práctica y es solo un remedio temporal, les tengo un buen dato:
Simplemente verifiquen del lado del servidor (recuerden que del lado cliente el “javascript “se puede deshabilitar) que el contenido que inserta el usuario no contenga comillas simples (las que normalmente se encuentran bajo el símbolo de interrogación en los teclados en español), y reemplácenlas por la entidad HTML de escape correspondiente (')
Existen muchos otros métodos de SQL injection que me comprometo a tratar en otros artículos, e indudablemente la solución que acabo de dar es solo una simple aspirina, pero como la aspirina misma es útil en el 50% de los casos.
Hasta la próxima…
Este blog está dirigido a todos los programadores y desarrolladores en general, en él encontrarán consejos útiles en las respectivas áreas del desarrollo de aplicaciones, especialmente de Aplicaciones y Soluciones Web sobre diferentes entornos y plataformas móviles como Windows Phone y Android.
28 de abril de 2010
Suscribirse a:
Entradas (Atom)
Entradas populares
-
Si bien las inyecciones LDAP no son muy comunes, pueden ser una de las más peligrosas vulnerabilidades en la web. Para empezar necesitamos...
-
Si el video de OWASP del anterior post sobre HSTS (HTTP Strict Transport Security) los dejó con algo de espectativas acerca de la implementa...
-
Es un pequeño dolor de cabeza convertir en tiempo real los URLs de una aplicación al formato que actualmente se utiliza para lograr una mayo...
-
Es importante cuando se habla de amenazas en aplicaciones web y otras, establecer un sistema de cálculo estándar que permita a los interesad...
-
Las amenazas constantes a las aplicaciones web, el crecimiento de cada vez más veloz de las plataformas desarrolladas en línea y una crecien...
-
La seguridad de aplicaciones web no escapa a las leyes de Murphy, por lo que me he permitido basado en algunas interpretaciones de las misma...
-
Uno de los errores más comunes de seguridad de los programadores de Asp.NET que utilizan "web forms" en sus aplicaciones, es cree...
-
Una de las amenazas más peligrosas del primer tipo de los OWASP top 10 de 2010, es decir de las amenazas que se refieren a inyecciones de có...
-
Como ya es sabido una de las mayores amenazas que rondan las aplicaciones web es el XSS o Cross Site Scripting, y algunas de sus múltiples v...
-
Si usted está de alguna manera involucrado con cualquiera de las áreas de las tecnologías de información y no sabe lo que significa " P...