Se dice que existe o se produjo una inyección SQL cuando, de alguna manera, se inserta o "inyecta" código SQL invasor dentro del código SQL programado a fin de alterar el funcionamiento normal del programa
La infraestructura web es un pilar básico para la mayoría de las empresas, ya que
no solo sirve para alojar webs empleadas como carta de presentación de cara al público, sino que
también es utilizada para ofrecer servicios e información a los usuarios y clientes.
Los ciberdelincuentes conocen perfectamente estas cualidades y saben que esa información, que en muchas ocasiones no está disponible para todo el mundo, puede ser muy valiosa, ya sea para ser vendida en el mercado negro (dark web), extorsionar a la empresa, desprestigiar su reputación o ser analizada y empleada para cualquier tipo de fin que permita al ciberdelincuente obtener un beneficio.
Por eso, es extremadamente importante
tener segura la infraestructura web, sobre todo si ofrecemos herramientas para dar servicio o almacenamos información.
Uno de los ataques más empleados son los de inyección SQL, en inglés SQL injection. En este tipo de ataques los ciberdelincuentes intentan acceder a las bases de datos para obtener la información contenida en ellas o, en algunos casos, alterar o destruir los datos.
¿Qué es SQL?
SQL, de sus siglas en inglés Structured Query Language, es un
lenguaje de programación diseñado con la finalidad de gestionar y administrar la información de bases de datos relacionales.
A través de dicho lenguaje no solo es posible generar las bases de datos utilizadas por muchos programas y plataformas web, sino también las consultas a la base de datos para obtener la información que estas contienen.
En el caso de las páginas web, estas consultas suelen venir generadas a partir de los datos que se introducen en los formularios que estas contienen.
¿Cómo se realizan estos ataques?
Estos ataques
suelen realizarse sobre formularios que se encuentran en la página web, los cuales hacen consultas a la base de datos para obtener los resultados. Si estos formularios no se encuentran correctamente configurados y no validan bien las consultas, podrían permitir inyectar comandos SQL directamente en la base de datos.
¿Cómo puedo evitar este tipo de ataques?
Para evitar este tipo de ataques existen distintos mecanismos:
•
Escapar los comandos. Consiste en evitar que el formulario procese ciertos caracteres o códigos específicos de la sintaxis del lenguaje SQL. En otras palabras, se aplica un filtro sobre los campos del formulario y este evita que los caracteres o palabras no permitidos puedan llegar a la base de datos en forma de consulta.
•
Verificar los datos. Con esta técnica se busca comprobar que los datos que solicitan los usuarios concuerdan con lo esperado. Por ejemplo, si un usuario a través de una consulta solicita una dirección de correo, la verificación debe comprobar que el tipo de dato que se le va a proporcionar es el esperado por una dirección de correo y no otro tipo de dato, como pudieran ser el número de teléfono o la contraseña.
•
Evitar la exposición. En muchas ocasiones el problema se basa en dejar accesibles a Internet bases de datos de carácter interno. Este tipo de descuidos puede permitir a los ciberdelincuentes acceder a información crítica de la empresa. Es aconsejable dejar estas bases de datos aisladas en la red interna de la empresa.
•
Uso de herramientas de análisis. Existen herramientas de análisis automatizado que permiten comprobar la seguridad de los formularios que tenemos en la página web, de tal modo que faciliten en gran medida encontrar posibles fallos de seguridad para poder subsanarlos.
Es muy importante que se tengan en cuenta estas medidas a la hora de diseñar nuestro sitio web y comprobarlas todas antes de publicar el portal en Internet.
Si tus sistemas se han visto comprometidos y sospechas que las bases de datos lo están también, recuerda que has de cumplir con el RGPD y la LOPDGDD, avisando a la
AEPD y los usuarios afectados.