Java - Seguridad al ejecutar query

   
Vista:
Imágen de perfil de Efrain

Seguridad al ejecutar query

Publicado por Efrain (28 intervenciones) el 21/06/2015 11:54:13
hola

en el siguiente codigo ejecuto una query para borrar registro donde identidad la paso de forma concatenada...eso hace que mi sistema sea inseguro ante inyecciones sql y otros tipos de hackers ....existe en java alguna forma de parametrizar esta query o convertir el contenido de la variable identidad en texto plano ???

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
try {
	Class.forName(driver);
	Connection conexion = DriverManager.getConnection(url+db,user,pass);
	Statement instruccion = conexion.createStatement();
	sql = ("DELETE FROM contactos WHERE id='"+identidad+"'");
	instruccion.executeUpdate(sql);
	JOptionPane.showMessageDialog(null,"ELIMINACION EXITOSA");
	FormMenuPrincipal Form2=new FormMenuPrincipal();
	Form2.setVisible(true);
	Form2.setLocationRelativeTo(null);
 
}
catch ( SQLException ex )
{
	Logger.getLogger(FormInsertar.class.getName()).log (Level.SEVERE, null, ex);
	System.out.println(ex);
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Seguridad al ejecutar query

Publicado por Oscar (5 intervenciones) el 21/06/2015 16:45:50
Buenos días.
Efrain.
Una pregunta porque quieres convertirlo las variables a texto plano? no es acaso más inseguro.
Otra cosa tu query funciona de la manera que lo estas declarando?

sql = ("DELETE FROM contactos WHERE id='"+identidad+"'");
Es que no entiendo porque colocas los paréntesis.
Para evitar que seas propenso a un SQL Injection, ocupa un PrepareStatement o puedes crear un stored procedure en tu motor de base de datos y llamarlo con un CallableStatement esto hace que se agilize tus operaciones en la base de datos como INSERT INTO, DELETE, UPDATE.

Ejemplo de un PrepareStatement:

1
2
3
4
5
6
7
8
9
10
String sql = "update gente set Nombre=? , Apellido_paterno=? where id=?";
 
PreparedStatement preparedStatement =
        connection.prepareStatement(sql);
 
preparedStatement.setString(1, "Gustavo");
preparedStatement.setString(2, "Ochoa");
preparedStatement.setLong  (3, 123);
 
int filasAfectadas = preparedStatement.executeUpdate();

Buen día.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Efrain

Seguridad al ejecutar query

Publicado por Efrain (28 intervenciones) el 22/06/2015 00:58:08
Hola Oscar
Exactamente lo que buscaba es lo q tu escribiste ,
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar