Akamai dots background

Tutorial sobre inyecciones SQL

Este tutorial sobre las inyecciones SQL ofrece una breve introducción a una de las amenazas más habituales a la seguridad en la web para las empresas comerciales y las organizaciones públicas. El tutorial sobre inyecciones SQL abarca cuatro temas:

  • El contexto de los ataques de inyección SQL
  • Los objetivos de los ataques de inyección SQL
  • El funcionamiento de las inyecciones SQL
  • Medios para defenderse de los ataques de inyección SQL

Tutorial sobre las inyecciones SQL, tema 1: El contexto de los ataques de inyección SQL

Las aplicaciones web más modernas presentan la misma estructura básica y el mismo flujo lógico: un cliente web (generalmente un servidor) se comunica con una aplicación web normalmente alojada en un servidor web y, a su vez, esta aplicación web se comunica con una o más bases de datos administrativas. Las bases de datos almacenan una gran variedad de información relevante para la aplicación, como las combinaciones de nombre de usuario y contraseña y datos de cuentas de usuarios. Los usuarios finales acceden a esta información y la modifican realizando entradas en los formularios de página web (por ejemplo, formularios de inicio de sesión o de búsqueda). Basándose en la información introducida por el usuario, la aplicación web envía comandos a las bases de datos, generalmente utilizando lenguaje de consulta estructurado (SQL), el lenguaje de comandos de la mayoría de las bases de datos relacionales actuales. La base de datos responde y, a continuación, la aplicación web responde al usuario.

Tutorial sobre las inyecciones SQL, tema 2: Los objetivos de los ataques de inyección SQL

En un ataque de inyección SQL, un pirata informático experto en sintaxis SQL envía entradas falsas en formularios de páginas web con el objetivo de obtener un acceso más directo y profundo a la base de datos administrativa del que puede obtener la aplicación web. A menudo, estos ataques intentan recuperar información valiosa como combinaciones de nombre de usuario y contraseña o información confidencial financiera y empresarial. En algunos casos, un ataque de inyección SQL también puede intentar modificar los datos (como el saldo de una cuenta) o eliminar datos de forma maliciosa. Así, los ataques de inyección SQL pueden dar lugar a importantes lagunas de ciberseguridad.

Tutorial sobre las inyecciones SQL, tema 3: El funcionamiento de las inyecciones SQL

En una inyección SQL, un pirata informático introduce términos y caracteres SQL especializados en el campo de entrada de un formulario web con el fin de engañar a la aplicación para que envíe a la base de datos comandos diferentes a los que enviaría normalmente. Como ejemplo práctico (que proviene de un ejemplo del sitio web del Proyecto abierto de seguridad de aplicaciones web OWASP [del inglés, Open Web Application Security Project]), considere un caso en el que el código de aplicación se escribe con la intención de ordenar el siguiente comando a una base de datos:

---------------

SELECT * FROM accounts

WHERE owner =

AND accountname = ;

---------------

Este comando intentará recuperar información de la cuenta de la tabla de "cuentas", pero solo en circunstancias determinadas en las que el nombre de propietario y el nombre de cuenta especificados se encuentren en la misma entrada de la tabla. Un usuario final facilitará el nombre de propietario y el nombre de cuenta específicos para la comprobación a través de un formulario de página web.

Un atacante puede introducir un nombre de propietario y de cuenta falsos en el formulario web del tipo "‘name' OR ‘x'='x'". Si la aplicación carece de defensas frente a la inyección, los caracteres de comillas simples junto con el uso del término OR generarán este comando SQL modificado para enviar lo siguiente a la base de datos:

---------------

SELECT * FROM accounts

WHERE owner = ‘smith'

AND accountname = ‘name' OR ‘x' = ‘x';

---------------

La cláusula generalmente restrictiva WHERE ahora se aplica a cada registro en la tabla de "cuentas", ya que aunque puede que no se encuentre la combinación de propietario y nombre de cuenta "smith/name", la parte OR de la cláusula (‘x'='x') siempre es verdadera. Por tanto, cada registro de la tabla puede devolverse a la aplicación y al usuario final.

Tutorial sobre las inyecciones SQL, tema 4: Medios para defenderse de los ataques de inyección SQL

Este tutorial sobre inyecciones SQL ha permitido introducir de forma breve los objetivos y las técnicas básicas de los ataques de inyección SQL. Para los propietarios de aplicaciones web, la pregunta fundamental es cómo impedir estos ataques. Existen dos enfoques generales:

  • Codificación prudente de aplicaciones. Aplicar una serie de prácticas recomendadas de programación puede reducir considerablemente la vulnerabilidad de las aplicaciones web frente a las inyecciones SQL. Entre ellas se incluyen el uso de consultas parametrizadas o procedimientos almacenados, así como el uso de listas negras o listas blancas para filtrar y sanear las entradas de los usuarios en los formularios web. No obstante, la confianza plena en la correcta programación rara vez representa un enfoque completamente idóneo para garantizar la seguridad de los servicios web y la protección de datos. Esto se debe en parte a que la mayoría de las aplicaciones web son el fruto de trabajo de varios programadores diferentes durante largos periodos de tiempo. También se debe a que puede ser excesivamente caro actualizar las aplicaciones web existentes con vulnerabilidades conocidas.
  • Colocar un firewall de aplicaciones web (WAF) delante de la aplicación web para inspeccionar y filtrar el trafico HTTP entrante. El WAF puede resultar un método de defensa eficaz frente a las inyecciones SQL, aunque los WAF in situ pueden generar con facilidad cuellos de botella en el rendimiento.

La solución de seguridad web basada en la nube integra un WAF en la red de distribución de contenido web global de Akamai. Esta solución proporciona una defensa de amplia distribución y posicionamiento avanzado frente a los ataques de inyección SQL, sin que merme el rendimiento de las aplicaciones web. La solución también protege contra la táctica cada vez más extendida de lanzamiento de un ataque de denegación de servicio contra una propiedad web a la vez que realiza ataques mediante el método de inyección SQL.

Obtenga más información sobre las soluciones de seguridad en la nube altamente escalables de Akamai.