Hola a todos los amigos del corral de picadores,
Quería disculparme por haber tardado en escribir pero es que no estaba inspirado.
En fin, hace poco, mientras estábamos en la granja trabajando, un gallito del corral le echaba la bronca a un polluelo por un error que había en su código.
Todo desafiante, estiré el cuello y fui a ver cuál era ese error; confiado en que lo encontraría fácil…. A simple vista no encontré nada.
¿El error? Uno de seguridad –> SQL Injection.

Teníamos un formulario html normal y corriente con usuario y password; y una JSP que recogía esos parámetros y los comprobaba en una BBDD con JDBC para mostrar o no cierta información.
La consulta era la siguiente:
SELECT * FROM tabla t WHERE t.USUARIO=”parametro_usuario” AND t.PASSWORD=”parametro_password”;
Parametro_usuario y parametro_password son los valores que metemos en el formulario.
¿Os animáis a adivinar los valores de parametro_usuario y parametro_password que hay que meter en el formulario para loguearse sin tener cuenta?
En Java, para corregir ésto simplemente tenemos que usar Connection.PrepareStatement(“consulta SQL”) antes de ejecutar la query. Es curioso que ya conocia esta función, a veces la utilizaba y a veces no, pero nunca sabía para qué servía exactamente.
Un saludo y que os la pique un pollo (yo no, of course)

