Inyección de SQL
Al ejecutarse la consulta en la base de datos, el código SQL inyectado también se
ejecutará y podría hacer un sinnúmero de cosas, como insertar registros, modificar o
eliminardatos, autorizar accesos e, incluso, ejecutar otro tipo de código malicioso en
el computador.
Por ejemplo, asumiendo que el siguiente código reside en una aplicación web y que
existe un parámetro"nombreUsuario" que contiene el nombre de usuario a
consultar, una inyección SQL se podría provocar de la siguiente forma:
El código SQL original y vulnerable es:
consulta := "SELECT * FROM usuariosWHERE nombre = '" + nombreUsuario + "';"
Si el operador escribe un nombre, por ejemplo "Alicia", nada anormal sucederá, la
aplicación generaría una sentencia SQL similar a la siguiente, que esperfectamente
correcta, en donde se seleccionarían todos los registros con el nombre "Alicia" en la
base de datos:
SELECT * FROM usuarios WHERE nombre = 'Alicia';
Pero si un operador malintencionadoescribe como nombre de usuario a consultar:
"Alicia'; DROP TABLE usuarios; SELECT * FROM datos WHERE nombre LIKE '%"
(sin las comillas externas), se generaría la siguiente consulta SQL,
SELECT * FROMusuarios WHERE nombre = 'Alicia';
DROP TABLE usuarios;
SELECT * FROM datos WHERE nombre LIKE '%';
En la base de datos se ejecutaría la consulta en el orden dado, se seleccionarían
todos losregistros con el nombre 'Alicia', se borraría la tabla 'usuarios' y finalmente
se seleccionaría toda la tabla "datos", que no debería estar disponible para los
usuarios web comunes.
En resumen, cualquierdato de la base de datos puede quedar disponible para ser
leído o modificado por un usuario malintencionado.
Nótese por qué se llama "Inyección" SQL. Si se observa el código malicioso, se notaráque está insertado en el medio del código bueno. Así, el código ha sido "inyectado"
dentro del primero.
La inyección SQL es fácil de evitar, por parte del programador, en la mayoría de los...
Regístrate para leer el documento completo.