DESSEG

Preventing Applications from SQL Injection Attack

Objetivo de la práctica:

Identificar y mitigar vulnerabilidades de inyección SQL mediante la implementación de consultas SQL parametrizadas, garantizando que los datos de entrada no comprometan el mecanismo de autenticación de la aplicación.

Duración aproximada:

Instrucciones

Paso 1. Inicia sesión con credenciales de usuario válidas:

Nombre de usuario: test
Contraseña: test1

Paso 2. Haz clic en LOGOUT desde el menú.

Paso 3. Intenta iniciar sesión utilizando los siguientes datos de entrada de inyección SQL:

Nombre de usuario: ' or '1'='1
Contraseña: ' or '1'='1

Resultado:

Confirmación de la vulnerabilidad a inyección SQL:

imagen resultado

Paso 4. Para prevenir la inyección SQL, ve a la pestaña LoginController.jsp, líneas n.º 21-23, y reemplaza la consulta SQL no parametrizada con la siguiente consulta SQL parametrizada:

PreparedStatement ps = con.prepareStatement(
    "select * from ecempinfo where uname=? and pwd=?");
ps.setString(1, uname);
ps.setString(2, pwd);
ResultSet rs = ps.executeQuery();

imagen resultado

Paso 5. Haz clic en el botón Save en la parte superior del editor para guardar los cambios.

Paso 6. Intenta iniciar sesión nuevamente utilizando los datos de entrada de inyección SQL indicados en el paso 3.

Resultado:

Paso 7. Haz clic en el botón Reset para restaurar el laboratorio al estado anterior y haz clic en OK en el mensaje emergente que indica ¡Restablecimiento exitoso!.