Saltar al contenido

SQL Injection: ¿Cómo protegerse de este ataque?

SQL Injection es un ataque informático en el que se introduce código SQL malintencionado en una entrada de formulario para manipular o obtener información de la base de datos. Según el Informe sobre amenazas a la seguridad 2014 de Symantec, este tipo de ataques representaron el 63% del total mundial. A continuación, te explicamos cómo protegerte frente a SQL Injection y qué medidas tomar para evitar que tu web sea víctima de esta amenaza.

Debido a su simplicidad, es una de las técnicas más populares por no decir la mas popular. Esto puede ocurrir en mysql, oracle o sqlserver . SQL Injection es un ataque que se realiza directamente sobre la base de datos, esto quiere decir que no necesita acceso al código fuente o a los archivos de configuración del servidor web.

Esto no es exclusivo de mysql , postgresql, sql server por lo cual es necesario entenderlo.

Índice

    SQL Injection en PHP

    Es comun ver formularios php que comprometen la seguridad de tus base de datos debido a que no se esta usando la función mysql_real_escape_string(). La forma más común de Injection es ingresar código SQL en un campo de texto.

    Ejemplo de esto es el código SQL:

    ‘ OR ‘a’=’a’

    En este caso se estaría obteniendo todos los usuarios de la base de datos ya que la condición siempre será true. Es importante mencionar que el ataque es posible gracias a la falta de validación o filtrado de los datos ingresados en el formulario.

    Para evitar esta vulnerabilidad es importante usar la función mysql_real_escape_string()

    Injection en MVC

    En las aplicaciones MVC es posible si no se hace un correcto filtrado de los datos ingresados por el usuario. Este ataque puede comprometer la seguridad de tu aplicación ya que el atacante podría obtener información de la base de datos, modificarla o eliminarla.

    Para evitar Injection en MVC se deben usar consultas parametrizadas. Las consultas parametrizadas son aquellas en las que los parámetros no son concatenados directamente sino que los mismos son enviados como parámetros separados. De esta forma SQL Injection no es posible.

    Como prevenirlo en ASP.NET?

    ASP.NET provee diferentes mecanismos para evitarlo como el uso de Stored Procedures, el uso de estos previene que cualquier SQL malintencionado sea ejecutado ya que el código SQL no es ingresado directamente en la aplicación sino que es almacenado previamente en la base de datos.

    Otro mecanismo es el uso de parámetros, con este el SQL malintencionado no será ejecutado ya que los parámetros son enviados de forma separada.

    Por último pero no por ello menos importante es la validación de los datos ingresados por el usuario.

    Herramientas para detectar SQL Injection

    Para poder detectar SQL Injection se pueden usar diferentes herramientas tales como:

    SQLMAP: Es una herramienta open source la cual permite realizar SQL Injection y obtener información de la base de datos.

    Havij: Es una herramienta comercial que permite realizar SQL Injection y obtener información de la base de datos.

    SQLNinja: Es una herramienta open source que permite realizar SQL Injection en aplicacion.

    Recomedancioens para prevenir este ataque

    -Validación de los datos ingresados por el usuario.

    -Uso de Stored Procedures.

    -Uso de parámetros.

    Este tipo de ataque es muy popular presente en aplicaciones que tiene sus base de datos en mysql , postgresql, sql server

    En resumen, es un ataque informático en el que se introduce código SQL malintencionado en una entrada de formulario para manipular o obtener información de la base de datos.

    gracias y nos veremos en la proxima entrada

    Bye :)!!