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.
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.
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.