OWASP Evolution

Cross-Site Scripting (XSS)A3: Cross-Site Scripting (XSS) · 2013

Contenido controlado por un atacante se ejecuta como código en el navegador de otra persona, permitiendo robo de sesión, suplantación o modificación de la interfaz.

Resumen

Contenido controlado por un atacante se ejecuta como código en el navegador de otra persona, permitiendo robo de sesión, suplantación o modificación de la interfaz.

Cómo funciona el ataque

A3 · Cómo funciona el ataqueUn comentario se inserta como HTML sin escape; el navegador interpreta el contenido del usuario como código en el sitio.ComentarioGuardarHTML sin escapeNavegadorCódigo en el sitio

Un comentario se inserta como HTML sin escape; el navegador interpreta el contenido del usuario como código en el sitio.

Ejemplo

Vulnerable · Pseudocódigo
comment = request.body["comment"]
comments.save(comment)
feed.innerHTML = comments.latest()

Corrección: Usar textContent o escape contextual; sanear HTML permitido y añadir CSP como defensa adicional.

Prevención

  • Codificar la salida según el contexto HTML, atributo, URL o JavaScript.
  • Usar plantillas con escape automático y sanear HTML cuando sea imprescindible.
  • Aplicar una Content Security Policy restrictiva como defensa adicional.

Linaje

  1. 2013 · A1: Injection Continúa en 2017
  2. 2013 · A3: Cross-Site Scripting (XSS) Baja al puesto 7 en 2017
  3. 2017 · A1: Injection Continúa
  4. 2017 · A7: Cross-Site Scripting (XSS) Se integra en Injection
  5. 2021 · A03: Injection Absorbe XSS
  6. 2025 · A05: Injection Baja desde el puesto 3
  • 2013:A1 → 2017:A1: Injection conserva el primer puesto.
  • 2013:A3 → 2017:A7: XSS baja del puesto 3 al 7.
  • 2017:A1 → 2021:A03: Injection baja del puesto 1 al 3.
  • 2017:A7 → 2021:A03: XSS se integra dentro de Injection.
  • 2021:A03 → 2025:A05: Injection baja del puesto 3 al 5.

Fuentes

Invítame un café

OWASP Evolution

Ediciones
Continúa / se mueveContinúa Se renombraRenombra Se fusiona / amplíaFusiona