0%
Inicio 9 Glossary Item 9 XSS (Cross-Site Scripting)
« Back to Glossary Index

Nivel Principiante

Imagina que una página web tiene un formulario donde puedes dejar un comentario. Si alguien malintencionado en lugar de escribir un comentario normal, escribe un código malicioso, la página lo mostrará como si fuera un comentario. El XSS es ese ataque donde el código de una persona se ejecuta en la computadora de otra persona. Al ocurrir esto, el atacante podría robar información privada de la víctima, como sus datos de acceso o lo que ha escrito en la página.

Nivel Intermedio

El XSS (Cross-Site Scripting) es una vulnerabilidad de seguridad en aplicaciones web que permite a un atacante inyectar scripts maliciosos en páginas web que otros usuarios ven. A diferencia de otros ataques que se dirigen al servidor, el XSS se enfoca en el cliente, es decir, en el navegador del usuario que visita la página.

Existen tres tipos principales de XSS:

  • XSS Almacenado (Stored XSS): El código malicioso se inyecta y se almacena en el servidor (por ejemplo, en un comentario en un foro). Todos los usuarios que visiten la página vulnerable verán el código ejecutarse.
  • XSS Reflejado (Reflected XSS): El código malicioso se inyecta a través de la URL de una página y se «refleja» en la respuesta del servidor sin ser guardado. El atacante necesita engañar a la víctima para que haga clic en un enlace malicioso.
  • XSS Basado en el DOM (DOM-based XSS): El ataque ocurre completamente en el lado del cliente. El script malicioso manipula el DOM de la página y se ejecuta cuando el navegador procesa el código.

Nivel Avanzado

Técnicamente, el XSS ocurre cuando una aplicación web no valida ni sanitiza adecuadamente la entrada de datos del usuario antes de renderizarla en la página. El atacante se aprovecha de esta vulnerabilidad para inyectar etiquetas HTML o JavaScript maliciosas.

Un ejemplo simple de un ataque XSS es cuando un atacante inyecta el siguiente código en un campo de comentario:

HTML

<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""><script>alert('¡Soy un ataque XSS!');</script></pre>

Si el servidor no sanitiza la entrada, el navegador de los usuarios que vean ese comentario ejecutará la alerta. Un ataque más sofisticado podría inyectar un script que robe la cookie de sesión del usuario y la envíe a un servidor del atacante, lo que podría permitirle robar la sesión del usuario.

Las principales medidas de mitigación para prevenir el XSS son:

  • Sanitización de la Entrada de Datos: Limpiar la entrada de datos del usuario, eliminando o escapando caracteres especiales como < y > antes de que se almacenen o se muestren en la página.
  • Codificación de la Salida (Output Encoding): Codificar los datos antes de que se muestren en el HTML, de modo que el navegador los interprete como texto plano en lugar de código HTML.
  • Content Security Policy (CSP): Implementar un encabezado CSP que solo permita la ejecución de scripts desde fuentes confiables, bloqueando así cualquier intento de inyección de código.

El XSS es una de las vulnerabilidades más comunes en la web y su prevención es una parte fundamental del desarrollo seguro de aplicaciones.

« Volver al índice del glosario