Skip to main content
Todos los Términos Glossary

Saneamiento del DOM

Definition

El saneamiento del DOM es el proceso de limpieza y validación del contenido HTML antes de que se inserte en el Modelo de Objetos del Documento, lo que ayuda a prevenir los ataques XSS y otras vulnerabilidades de inyección. Los navegadores modernos proporcionan API de saneamiento integradas, mientras que varias bibliotecas ofrecen funciones de saneamiento. El saneamiento adecuado es crucial cuando se trata de contenido generado por el usuario o datos de terceros que deben representarse como HTML.

Qué es el saneamiento del DOM

El saneamiento del DOM es el proceso de limpiar HTML no confiable para que pueda insertarse en una página sin arrastrar marcado ejecutable o peligroso. Cuando el código asigna una cadena a innerHTML, outerHTML o un sink similar del DOM, el navegador la analiza y la convierte en nodos vivos, incluida cualquier etiqueta script, manejador onerror, URL javascript: u otro contenido activo que contenga. Un saneador analiza ese HTML, recorre el árbol resultante y elimina o reescribe todo lo que no esté en una lista de permitidos de etiquetas y atributos seguros, devolviendo un marcado que se renderiza como se pretendía pero que no puede ejecutar código. Bibliotecas como DOMPurify hacen esto de forma robusta, y los navegadores ya incorporan una Sanitizer API nativa y el método más seguro setHTML para el mismo fin.

Por qué importa el saneamiento

El saneamiento es una defensa principal contra el XSS basado en el DOM y el almacenado. Cualquier función que renderice como HTML contenido generado por usuarios o de terceros, comentarios, campos de texto enriquecido, mensajes de chat o bloques de CMS, es un posible punto de inyección, y el simple escapado no basta cuando el contenido está pensado genuinamente para ser HTML. Los enfoques ingenuos, como poner la etiqueta script en una lista negra o usar una expresión regular para eliminar elementos, pasan por alto el enorme espacio de trucos del analizador: XSS por mutación, marcado malformado que los navegadores reparan hasta convertirlo en ejecutable, peculiaridades de contenido ajeno de SVG y MathML, y atributos manejadores de eventos. Un saneador verificado que opera sobre el árbol analizado en lugar del texto en bruto cierra estas brechas y convierte una vulnerabilidad de alta gravedad en una salida inerte.

Buenas prácticas, y el papel complementario de cside

Prefiere sinks seguros como textContent o el binding del framework, y recurre a la inserción de HTML solo cuando sea imprescindible; entonces sanea con una biblioteca mantenida como DOMPurify o la Sanitizer API nativa en lugar de filtros hechos a mano, manteniéndola actualizada a medida que se descubren nuevas evasiones. Combínala con una Content Security Policy estricta para que una carga que se te escape siga sin poder ejecutarse. El saneamiento vive en tu propio código, así que no cubre lo que hace un script de terceros comprometido después de cargarse, ya que ese script puede llamar a innerHTML por sí mismo. cside aborda esa brecha enrutando los scripts de terceros a través de un método Script y analizando la carga, detectando y bloqueando las escrituras inseguras en el DOM que esos scripts intentan y registrándolas para análisis forense.

Definition

¿Es lo mismo el escapado que el saneamiento del DOM?

No. El escapado convierte caracteres como los corchetes angulares en entidades HTML para que el texto se renderice de forma literal, lo cual es correcto cuando quieres mostrar el marcado como texto plano. El saneamiento mantiene el contenido como HTML real pero elimina las partes peligrosas. Usa el escapado para la salida de texto y el saneamiento solo cuando el contenido del usuario deba renderizarse como marcado real.

Definition

¿Debería escribir mi propio saneador de HTML?

Casi nunca. El análisis de HTML del navegador tiene innumerables casos límite, contenido ajeno, peculiaridades de mutación y recuperación de marcado malformado, que los filtros y expresiones regulares escritos a mano pasan por alto, lo que da lugar a evasiones. Usa una biblioteca mantenida y ampliamente probada como DOMPurify o la Sanitizer API integrada, y mantenla actualizada a medida que los investigadores descubren nuevas técnicas de evasión.

Got more questions

Talk to a security expert

We answer client-side security questions every day. Bring yours.

Reservar una demo

¿Quieres verlo en detalle con un ingeniero?

Treinta minutos, sobre tu propio sitio. Nada de diapositivas.

Te enseñaremos:

Qué scripts de terceros se están ejecutando ahora mismo en tu sitio
En qué punto estás con los requisitos 6.4.3 y 11.6.1 de PCI DSS
Qué parte de tu tráfico son bots y agentes de IA

¿Prefieres mandarnos una pregunta?

Buscando huecos libres…

Solo humanos de verdad. Nos daríamos cuenta.

¿Problemas para reservar? Abrir el calendario en una pestaña nueva

¿Qué quieres resolver?

Cuéntanoslo en una línea y te responderemos con algo útil, no con un discurso genérico.

Solemos ayudar con:

Ver qué scripts de terceros se ejecutan en tu sitio
Evidencias para PCI DSS 6.4.3 y 11.6.1
Bots, agentes de IA y robo de cuentas

¿Prefieres reservar una hora? Elegir un hueco