SQL (Structurer Query Lenguage) es un lenguaje diseñado para administrar la información de las bases de datos. Cada vez que un sitio web necesita acceder a la base de datos, procesa una consulta a través de lenguaje SQL.
Una inyección de SQL es un tipo de ciberataque en el que los hackers alojan o inyectan código malicioso en aplicaciones web con la finalidad de afectar su funcionamiento o robar información protegida.
Los atacantes aprovechan las vulnerabilidades en los sistemas de bases de datos accediendo por medio del lenguaje SQL, una vez que logran acceder pueden tomar control de la base de datos del sitio web y disponer de ella a su antojo.
Desde borrar los datos para causar molestias o lo que ocurre con algunos sitios web financieros donde las inyecciones de SQL son utilizadas para editar las bases. Con esto, los atacantes pueden manipular los saldos de las cuentas de los clientes, transferir dinero a sus propias cuentas, robar los detalles de las tarjetas de crédito de terceros, o robar su información personal.
Estos ataques tienen graves consecuencias tanto para los usuarios como para las empresas. Un usuario puede perder todo su capital si el intruso roba sus credenciales, en el caso empresarial puede causar el robo de datos sensibles, filtraciones de seguridad y por ende, una total pérdida de credibilidad en el mercado.
¿Cómo funciona un ataque SQL?
El mejor ejemplo para explicar cómo funcionan estos ataques es visualizar un formulario de acceso como el que utiliza la mayoría de páginas web. Cuando el usuario rellena el formato con su usuario y contraseña accede al sitio, está enviando una consulta SQL, misma que será ejecutada contra la base de datos de la aplicación.
Tomemos en cuenta que cada consulta se da a manera de instrucción. En este caso se enviaría el nombre del usuario y la contraseña. En el caso de una inyección SQL, el atacante sumaría otros valores y aún cuando no es ni el usuario ni la contraseña podría entrar a la web.
¿Cómo protegerse de un ataque SQL?
La inyección de SQL es uno de los ciberataques más comunes. De hecho, el proyecto abierto de seguridad de aplicación web (OWASP por sus siglas en inglés) lo considera entre los 10 mayores riesgos de seguridad de las aplicaciones web, principalmente por tres razones:
- Las bases de datos de SQL son sumamente amplias
- La información que alojan los sistemas es muy atractiva: datos de cuentas de usuario, números de tarjetas de crédito, credenciales de inicio de sesión.
- Las aplicaciones web suelen tener fallas en la seguridad, especialmente, si muchos programadores han intervenido el código.
Estrategias de prevención
Los desarrolladores pueden emplear diversas técnicas para prevenir un ciberataque tales como:
- Validar el acceso del usuario mediante una lista de admisión. Esto evitará que se envíen datos no deseados a la base de datos.
- Arrojar mensajes de error genéricos y no personalizados. Los hackers pueden sacar demasiada información del usuario a partir de un mensaje de error.
- Asignar el mínimo de privilegios al usuario que se conectará a la base de datos. De igual manera no se recomienda tener un usuario único que tenga acceso a todas las bases, pues ahí se facilita el robo general de la información.
La inyección SQL es un error tan conocido que hay infinidad de formas de aplicarla, por ello, la recomendación general es utilizar las últimas tecnologías, ya que un gran número de las antiguas no cuentan con protección SQL. Al usar la versión más reciente tanto del entorno de desarrollo como del lenguaje es menos probable que un ataque por inyección SQL pueda perjudicar una aplicación.
En Grupo Electrodata, contamos con soluciones para mantener seguro tus aplicaciones contrar los diferentes tipos de ataques. Para mayor información escríbenos a: marketing@electrodata.com.pe.