martes, 24 de abril de 2012

Sql inyection en Java

Cuando uno piensa en sql inyection siempre lo asocia a una aplicación web, pero esto no siempre es cierto, se puede producir en cualquier lenguaje que vaya ejecutar consultas sobre una base de datos.

Este código java trata de insertar un usuario en una base de datos.

conn = pool.getConnection();
conn = bd.getConnection();
sql = "INSERT INTO usuarios (playername, password, email) VALUES ("+user+","+pwd+","+email+")";
ps = conn.createStatement();
ps.executeQuery(sql);

Cuando ejecutamos consultas sobre una base de datos es importante tratar de no concatenar cadenas y la manera de ejecutar la sentencia correctamente sin posibilidad de inyección SQL sería asi:

conn = pool.getConnection();
conn = bd.getConnection();
sql = "INSERT INTO usuarios (playername, password, email) VALUES (?, ?, ?)";
ps.setString(1, user);
ps.setString(2, pwd);
ps.setString(3, email);
ps = conn.createStatement();
ps.executeQuery(sql);

No hay comentarios:

Publicar un comentario