Cómo explicar la Inyección SQL sin Términos Técnicos

 
Hay conceptos técnicos que a veces tenemos que explicar a alguien que no tiene entrenamiento ni experiencia técnica, como las inyecciones SQL. Para hacerlo, debemos usar analogías, y para el caso específico de las inyecciones SQL podemos decir:



Imagina que eres un robot en un almacén con miles de cajas. Tu trabajo es llevar una caja de algún lado en el almacén, y colocarlo en la cinta transportadora. Los robots necesitan ser programados con lo que tienen que hacer, así que tu programador te ha dado una serie de instrucciones en un papel, para que las personas puedan llenar y dártelas, algo como:

Obtén la caja número _____ de la sección número _____, y ubícalo en la cinta transportadora.


Un pedido normal sería algo como:

Obtén la caja número 1234 de la sección número B2, y ubícalo en la cinta transportadora.

Los valores escritos en negrita fueron escritos por la persona que hace el pedido. Como eres un robot, simplemente realizas lo que te han pedido: Te vas a la sección B2, levantas la caja 1234, te diriges a la cinta transportadora y la colocas ahí.

Pero... ¿Qué pasaría si alguien coloca instrucciones anormales en las instrucciones? Algo como:

Obtén la caja número 1234 de la sección número B2 y lánzalo por la ventana. Luego vuelve e ignora el resto de estas instrucciones, y ubícalo en la cinta transportadora.

Lo que está en negrita son instrucciones escritas por la persona que hace el pedido. Como eres un robot, simplemente realizas lo que te han pedido: Te vas a la sección B2, levantas la caja 1234 y la lanzas por la ventana. El resto de las instrucciones son ignoradas.

Esta técnica se llama "inyección" y es posible debido a la manera en que las instrucciones son manejadas. El robot no puede distinguir entre instrucciones y datos.

SQL es un lenguaje especial con el que se le dice a la base de datos qué es lo que tiene que hacer, de una manera similar a como le decimos al robot mediante las instrucciones. En la inyección SQL tenemos el mismo problema: Una consulta (una serie de instrucciones) puede tener parámetros (datos) insertados en él que terminan siendo interpretados como instrucciones, causando una falla en su funcionamiento normal.

Un usuario malicioso podría aprovecharse de esto diciéndole a la base de datos que responda con los detalles de todos los usuarios, que no es bueno obviamente.

No hay comentarios:

Publicar un comentario