Ataques de inyección SQL: cómo evitar, ejemplos…

Ataques de inyección SQL: cómo evitar, ejemplos…

Los ataques de inyección SQL atacan los sitios web que dependen de bases de datos relacionadas. A continuación, te explicamos más detalles.

En este tipo de páginas web, los parámetros se envían a la base de datos mediante consultas SQL. Si el diseñador no valida los parámetros incluidos en la consulta SQL, un atacante podría alterar la consulta para acceder a toda la base de datos e incluso modificar su contenido. Algunos caracteres permiten concatenar varias consultas SQL o ignorar el resto de la consulta. Al incluir este tipo de caracteres en la consulta, un atacante podría ejecutar potencialmente cualquier consulta que desee. Por ejemplo, considera la siguiente consulta que espera un nombre de usuario como parámetro:

SELECT * FROM usuarios WHERE nombre="$nombre";

Un intruso solo necesita ingresar un nombre, como "toto" O 1=1 O nombre="titi", para que la consulta quede así:

SELECT * FROM usuarios WHERE nombre="toto" OR 1=1 OR nombre="titi";

Con la consulta modificada, la cláusula WHERE siempre se cumple, lo que significa que devolverá registros correspondientes a todos los usuarios.

¿Qué son los procedimientos almacenados?

Algunos sistemas de gestión de bases de datos, como Microsoft SQL Server, cuentan con procedimientos almacenados que permiten ejecutar comandos de administración. Estos procedimientos pueden ser peligrosos, ya que un usuario malintencionado podría ejecutar comandos del sistema que faciliten una intrusión.

¿Cómo evitar los ataques de inyección SQL?

A continuación, te presentamos algunas pautas que pueden ayudar a protegerse contra ataques de inyección SQL:

  • Valida el formato de los datos de entrada, especialmente en cuanto a caracteres especiales.
  • Evita mostrar mensajes de error explícitos que revelen la consulta SQL o parte de ella.
  • Elimina las cuentas de usuario inactivas, especialmente las predeterminadas.
  • No permitas cuentas sin contraseñas.
  • Minimiza los privilegios de las cuentas utilizadas.
  • Suprime los procedimientos almacenados.

Enciclopedia