Ataques de inyección SQL

Mayo 2017

Inyección SQL

Los ataques de inyección SQL atacan los sitios web que dependen de bases de datos relacionadas.

En este tipo de páginas Web, los parámetros se pasan a la base de datos como una consulta de SQL. Si un diseñador no verifica los parámetros que se pasan en la consulta de SQL, un hacker puede modificar la consulta para acceder a toda la base de datos e incluso modificar su contenido.

Algunos caracteres posibilitan coordinar varias consultas de SQL o ignorar el resto de la consulta. Al insertar este tipo de carácter en la consulta, un hacker puede ejecutar potencialmente la consulta que elija.

Ante la siguiente consulta, que espera un nombre de usuario como parámetro:

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

Un intruso sólo necesita escribir un nombre, por ejemplo, "toto" O 1=1 O nombre="titi" para que la consulta quede de la siguiente manera:

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

Con la consulta anterior siempre se realiza la cláusula WHERE, lo que significa que devolverá registros que corresponden a todos los usuarios.

Procedimientos almacenados

Además, algunos sistemas de administración de bases de datos, como por ejemplo Microsoft SQL Server, poseen procedimientos almacenados que posibilitan ejecutar comandos de administración. Estos procedimientos son potencialmente peligrosos ya que permiten que un usuario malintencionado ejecute comandos de sistema que puedan causar una posible intrusión.

Contramedidas

Estas son algunas reglas que pueden ayudarle a protegerse contra ataques de inyección SQL:

  • Verifique el formato de los datos de entrada y, en particular, si hay caracteres especiales;
  • No deje que se vean mensajes de error explícitos que muestren la consulta o parte de la consulta de SQL;
  • Elimine las cuentas de usuario que no se usen y especialmente las predeterminadas;
  • No acepte cuentas sin contraseñas;
  • Mantenga al mínimo los privilegios de las cuentas que se usan;
  • Elimine los procedimientos almacenados.

Consulta también


SQL injection attacks
SQL injection attacks
Attaques par injection de commandes SQL
Attaques par injection de commandes SQL
Attacchi SQL injection
Attacchi SQL injection
Ataques por injecção de comandos SQL
Ataques por injecção de comandos SQL
Última actualización: 16 de octubre de 2008 a las 15:43 por Jeff.
El documento «Ataques de inyección SQL» se encuentra disponible bajo una licencia Creative Commons. Puedes copiarlo o modificarlo libremente. No olvides citar a CCM (es.ccm.net) como tu fuente de información.