Identificar y prevenir vulnerabilidades de Cross-Site Scripting (XSS) mediante la implementación de técnicas de codificación de salida, asegurando que los datos renderizados no permitan la ejecución de scripts maliciosos en la aplicación.
Paso 1. Haz clic en Contact
en el menú.
Paso 2. Para probar si la aplicación es vulnerable a ataques XSS, ingresa el siguiente código JavaScript en el cuadro de texto Message y haz clic en el botón Send
:
<script>alert('XSS');</script>
Resultado:
Confirmación de la vulnerabilidad a XSS:
Ve a la pestaña FetchMatching.jsp
, línea n.º 26.
Verás que no se realiza ninguna codificación de salida antes de renderizar los datos.
Paso 3. Haz clic en el botón OK del mensaje emergente mostrado.
Paso 4. Para prevenir ataques XSS, ve a la pestaña FetchMatching.jsp
, línea n.º 26, y reemplaza la línea de código con el siguiente fragmento:
out.println("Your message ....\"" + ESAPI.encoder().encodeForHTML(dt) + "\" has been sent");
Paso 5. Haz clic en el botón Save
en la parte superior del editor para guardar los cambios.
Paso 6. Intenta ejecutar el ataque XSS nuevamente siguiendo los pasos 1 y 2.
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!
.