Cargando

Ir a contenido


 


ASP.NET MVC - SQL Injection

En este tutorial vamos a ver cómo funciona el SQL Injection y cómo prevenirlo.


Escrito por el jul 19 2014 22:05


Existen muchos tipos de ataques que podemos recibir en nuestras aplicaciones, uno de los más comunes y que puede generar una gran cantidad de daño es el SQL Injection, este ataque consiste en encontrar vulnerabilidades en la forma en la que manejamos las consultas contra base de datos para extraer información o insertar valores que puedan afectar la funcionalidad de la misma.

Para poder protegernos contra este tipo de ataques primero debemos conocer en consiste, de esta forma podremos aprender que tipo de precauciones debemos tomar.

SQL Injection


Como mencionamos este ataque hace que nuestra base de datos no funcione de manera adecuada, para ello el atacante introduce datos que hacen que nuestras consultas fallen de acuerdo a ciertas vulnerabilidades, con ello el atacante puede intentar obtener los esquemas de nuestras tablas o ingresar datos que puedan comprometer el funcionamiento, como por ejemplo ingresar un usuario para acceder a la sección administrativa de nuestra aplicación.

Una de las formas más comunes, es que ingresemos parámetros directamente como los recibimos desde los controladores, por ejemplo tenemos una búsqueda por categorías y recibimos del controlador el identificador de una categoría a buscar, si esta pasa directamente sin limpiarse puede generar un ataque que le muestre al atacante todas las categorías existentes.

Veamos el siguiente código inseguro:


Podemos ver como en la línea 6 construimos la condición de la búsqueda y luego en la línea 10 la pasamos directamente al método que arma la consulta, un ojo de poca experiencia quizás no ve ningún problema, pero si un atacante ingresa el siguiente parámetro: “1 or 1=1” podría obtener el listado de toda nuestra tabla.

¿Cómo protegernos?
La forma para protegernos en este caso, pasa por dos pasos básicos, el primero es que no podemos dejar que se ejecuten datos directamente como los recibimos, para ello antes de la consulta debemos limpiar el parámetro con un método que busque por caracteres ilegales y en caso de encontrarlos enviar al usuario a una página de 404 o página no encontrada.


Veamos en el siguiente código como podemos filtrar lo que recibimos:



Aquí revisamos con una expresión regular que solo sean números lo que recibe nuestro controlador, en caso contrario enviamos un mensaje, cada quien puede hacer su versión, pero lo importante está en controlar lo que va a recibir nuestra aplicación.

El segundo paso para evitar los ataques es no trabajar con el comodín “*” y siempre limitar las consultas cuando esperamos un registro, de esta forma evitamos exponer todos los datos en caso que alguien logre superar nuestras previsiones.

Capturar excepciones
Por último, si un parámetro ilegal llega a entrar en nuestra aplicación, debemos evitar a toda costa que salga una traza del error, ya que esta posee datos sensibles de nuestra instalación y pueden ser utilizados en nuestra contra, por ello siempre debemos asegurarnos de capturar las excepciones y enviar un mensaje personalizado que no de muchos detalles, ya que estos detalles los podremos ver en el ambiente de desarrollo.


Como pudimos ver conocer los ataques nos da una perspectiva diferente de cómo podemos proteger nuestra aplicación y cómo hacer para darle más seguridad a nuestros usuarios.
¿Te ha gustado y ayudado este Tutorial?
Puedes premiar al autor pulsando este botón para darle un punto positivo
  • -
  • 0
10
VOTA
5
100%
4
0%
3
0%
2
0%
1
0%

  Información

  •   Publicado jul 19 2014 22:05
  •   Actualizado jul 21 2014 12:14
  •   Visitas 776
  •   Nivel
    Avanzado



Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!
Demuestra que eres experto!
  ESCRIBIR TUTORIAL
Suscribirse