Buscar este blog

viernes, 4 de julio de 2014

Humor y SQL Server: inyección SQL y cómo evitarla (no llames a tu hijo DROP TABLE)

El portal xkcd publica esta viñeta sobre inyección de código en SQL Server:

Inyección en SQL Server
Los peligros de llamar a tu hijo DROP TABLE
Tratado con gran sentido del humor, esta cómica situación nos pone en alerta frente a la inyección de código SQL Server, que puede suponer una vulnerabilidad seria para nuestras bases de datos.

Una aplicación que no compruebe los datos que en ella se introducen a través de aplicaciones externas está expuesta al desastre. En el cómic se introduce una instrucción DROP TABLE en medio del supuesto nombre de un niño inscrito en un colegio. Al introducir el falso nombre en el sistema informático del centro, el resultado es catastrófico: la tabla de estudiantes es eliminada por completo.

La Wikipedia presenta un ejemplo similar para demostrar en qué consiste la inyección SQL Server, así como diversas soluciones a adoptar, dependiendo del lenguaje de programación de la aplicación:
"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 usuarios WHERE 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 es perfectamente 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 malintencionado escribe 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, (el color verde es lo que pretende el programador, el azul es el dato, y el rojo, el código SQL inyectado):
SELECT * FROM usuarios WHERE nombre = 'Alicia'; DROP TABLE usuarios; SELECT * FROM datos WHERE nombre LIKE '%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 los registros 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."

jueves, 3 de julio de 2014

¡Nos vemos en el SQLSaturday Barcelona!

¡Por primera vez llegan a España los famosos eventos SQLSaturday! Será en Barcelona, el próximo sábado 25 de octubre de 2014.

Ya me he registrado en el evento. Será una buena oportunidad para conocer a otros profesionales de SQL Server y compartir experiencias y conocimiento, todo ello mientras aprendemos de los mejores expertos, incluidos algunos MVP y MCM de Microsoft, en las diferentes sesiones programadas.
SQLSaturday es un evento gratuito de un día de duración para profesionales y futuros profesionales relacionados con SQL Server, Big Data y Business Intelligence; organizado por la Asociación de Profesionales de SQL Server (PASS). Se han celebrado más de 300 eventos SQLSaturday alrededor de todo el mundo (el de Barcelona será el 338) y ésta va a ser la primera edición en España. El plazo de registro lleva abierto algunos días, en los que ya se han inscrito más de 70 asistentes.
Tal y como afirma la web del evento, dentro de la multitud de temas que se van a tratar en las sesiones, podremos encontrar:

  • Motor relacional (optimización, bloqueos, índices...)
  • Alta disponibilidad
  • SQL Server 2014
  • Big Data (HDinsight, Pig, Hive...)
  • Power BI
  • Integration Services, Analysis Services, Reporting 
  • Powershell 
  • ...
Habrá sesiones en inglés y en castellano. Los ponentes han ido enviando sus propuestas de sesiones, que aparecen listadas en la web del evento. En próximas fechas se publicará el calendario final del evento, para que cada asistente se programe aquéllas a las que tiene más interés en asistir.

Además, el evento favorece el networking entre profesionales de SQL Server, facilitando un lugar común en el que conocer al resto de asistentes mediante sus perfiles de LinkedId o sus cuentas de Twitter.