Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
1
respuesta

[Duda] Statement y PreparedStatement

En los videos mencionan que cuando ejecutamos una query SQL como Statement tenemos un riesgo de seguridad llamado SQL Injection y para evitar el fallo por SQL Injection debemos utilizar la interfaz PreparedStatement, mi duda es si el Statement siempre causa un riesgo de seguridad deberíamos evitarlo siempre y solo usar PreparedStatement o en que caso debemos usar solo Statement, gracias y saludos

1 respuesta
solución!

Hola,

Es una excelente pregunta y muestra tu comprensión de la importancia de la seguridad en la programación.

En general, es cierto que PreparedStatement es más seguro que Statement y debería ser preferido cuando se trata de consultas que involucran parámetros de entrada del usuario. PreparedStatement evita el riesgo de inyección SQL al escapar automáticamente los caracteres especiales y al permitir que los parámetros de entrada se establezcan de manera segura.

Sin embargo, eso no significa que Statement no tenga su lugar. A veces, puedes tener consultas SQL que no dependen de ninguna entrada del usuario y son completamente controladas por tu código. En tales casos, usar Statement puede ser más simple y no presenta riesgos de inyección SQL.

Por ejemplo, podrías tener una consulta como esta:

Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM students");

En este caso, ya que no hay entrada del usuario en la consulta, no hay riesgo de inyección SQL y es perfectamente seguro usar Statement.

Por otro lado, si tu consulta depende de la entrada del usuario, como esta:

String studentName = getUserInput();
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM students WHERE name = '" + studentName + "'");

En este caso, es muy peligroso usar Statement porque un usuario malintencionado podría manipular la entrada para alterar la consulta. Aquí es donde debes usar PreparedStatement.

Espero haber aclarado tu duda. Recuerda siempre considerar la seguridad cuando estés programando. Mucho éxito en todo lo que te propongas y si tienes alguna duda aquí estaremos para apoyarte.

¡Vamos juntos!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios.