XSS Basado en DOM
¿Qué es XSS Basado en DOM?
XSS Basado en DOMVariante de XSS donde la inyección y la ejecución ocurren totalmente en el navegador porque JavaScript del cliente escribe datos no confiables en un sink sin sanear.
El XSS basado en DOM (también Tipo 0) es una vulnerabilidad de scripting entre sitios cuya causa reside íntegramente en el código del cliente. Una fuente de datos — por ejemplo location.hash, document.referrer, window.name, postMessage o localStorage — se pasa sin saneamiento a un sink peligroso del DOM como innerHTML, document.write, eval o jQuery.html. El servidor nunca ve la carga, por lo que la vulnerabilidad es invisible para WAFs tradicionales y registros. Las defensas incluyen APIs seguras como textContent, Trusted Types en navegadores modernos, una CSP estricta y herramientas que analizan el flujo de datos contaminados.
● Ejemplos
- 01
document.getElementById('out').innerHTML = location.hash.substring(1);
- 02
Un router de SPA usa window.location para renderizar HTML sin sanear en una plantilla.
● Preguntas frecuentes
¿Qué es XSS Basado en DOM?
Variante de XSS donde la inyección y la ejecución ocurren totalmente en el navegador porque JavaScript del cliente escribe datos no confiables en un sink sin sanear. Pertenece a la categoría de Ataques y amenazas en ciberseguridad.
¿Qué significa XSS Basado en DOM?
Variante de XSS donde la inyección y la ejecución ocurren totalmente en el navegador porque JavaScript del cliente escribe datos no confiables en un sink sin sanear.
¿Cómo funciona XSS Basado en DOM?
El XSS basado en DOM (también Tipo 0) es una vulnerabilidad de scripting entre sitios cuya causa reside íntegramente en el código del cliente. Una fuente de datos — por ejemplo location.hash, document.referrer, window.name, postMessage o localStorage — se pasa sin saneamiento a un sink peligroso del DOM como innerHTML, document.write, eval o jQuery.html. El servidor nunca ve la carga, por lo que la vulnerabilidad es invisible para WAFs tradicionales y registros. Las defensas incluyen APIs seguras como textContent, Trusted Types en navegadores modernos, una CSP estricta y herramientas que analizan el flujo de datos contaminados.
¿Cómo defenderse de XSS Basado en DOM?
Las defensas contra XSS Basado en DOM combinan habitualmente controles técnicos y prácticas operativas, como se detalla en la definición.
¿Cuáles son otros nombres para XSS Basado en DOM?
Nombres alternativos comunes: XSS Tipo 0, XSS de cliente.
● Términos relacionados
- attacks№ 240
Cross-Site Scripting (XSS)
Vulnerabilidad web que permite a un atacante inyectar scripts maliciosos en páginas vistas por otros usuarios, ejecutándose en el navegador de la víctima bajo el origen del sitio.
- attacks№ 1107
XSS Almacenado
Vulnerabilidad de scripting entre sitios persistente: el script del atacante se guarda en el servidor y se ejecuta en el navegador de cada visitante.
- attacks№ 912
XSS Reflejado
XSS no persistente en el que una entrada controlada por el atacante se refleja inmediatamente en la respuesta y se ejecuta en el navegador de la víctima.
- appsec№ 214
Política de Seguridad de Contenidos (CSP)
Cabecera HTTP que indica al navegador qué orígenes de scripts, estilos, marcos y otros recursos están permitidos, limitando el impacto de XSS y de inyecciones de datos.
- vulnerabilities№ 869
Contaminación de prototipos
Vulnerabilidad de JavaScript en la que una entrada no confiable modifica Object.prototype, inyectando propiedades en todos los objetos y alterando el comportamiento o llegando a RCE.
- appsec№ 773
Codificación de salida
Transformar datos no confiables a un formato seguro para un contexto específico (HTML, JavaScript, URL, SQL, shell) para que no escapen y se ejecuten como código.
● Véase también
- № 104XSS Ciego