Desarrollo y arquitectura web

Sanitizer API de Chrome 146: HTML más seguro frente a XSS

Una desarrolladora trabaja con código en tres pantallas en su escritorio.

Un CMS entrega un párrafo con enlaces y formato. El frontend lo muestra, hasta que ese campo también contiene código que el navegador puede ejecutar. La Sanitizer API actualizada de Chrome 146 ayuda a mostrar HTML de forma más segura. Pero ¿por qué interpretamos esos datos como HTML?

El riesgo comienza al insertar contenido

Usar innerHTML con contenido no confiable puede provocar XSS. El problema no es recuperar datos mediante una API, sino interpretarlos como HTML activo. Para etiquetas, títulos y mensajes corrientes, textContent trata los datos como texto.

container.innerHTML = cmsContent;
container.textContent = userInput;

Cuando el formato es necesario

Los redactores pueden necesitar párrafos, enlaces y listas. Element.setHTML() procesa HTML y elimina estructuras consideradas peligrosas para XSS. Chrome anunció esta API en marzo de 2026 y también mencionó Firefox. El ejemplo se basa en la documentación y no se ha ejecutado en varios navegadores.

const container = document.querySelector('#article');
const cmsContent = `<p>Hello</p><img src="x" onerror="alert('XSS')">`;
container.setHTML(cmsContent);

Sanitizar no sustituye una política de contenido

Distingue los campos de texto plano de los que aceptan HTML enriquecido. Una propiedad label no debería procesar código HTML arbitrario; un componente de contenido enriquecido puede aplicar reglas documentadas. Revisa vistas previas, plugins y administración.

Prepara los navegadores sin setHTML

MDN indica que la disponibilidad sigue siendo limitada. Detecta la función en cada navegador y webview compatible. Si falta, utiliza una biblioteca de sanitización mantenida y bien configurada. Nunca vuelvas a innerHTML sin filtrar.

if ('setHTML' in Element.prototype) {
  container.setHTML(cmsContent);
} else {
  // Use a reviewed, safely configured sanitizer fallback.
}

Prueba ataques y contenido legítimo

Comprueba atributos de eventos, etiquetas inesperadas y protocolos peligrosos, además de enlaces, listas y tablas legítimas. Verifica la accesibilidad. Content Security Policy, el escape contextual y Trusted Types aportan capas complementarias.

La mayor mejora suele consistir en procesar menos HTML no confiable. Reduce los puntos de inserción y protege de manera coherente los que sean necesarios.

CMS architecture

Fuentes

Contacta con nosotros

Cuéntanos cómo podemos ayudarte; responderemos en un plazo de dos días laborables.

Solo es necesario si quieres que te llamemos.
Para patrocinios, indica tu empresa y propuesta. Para correcciones, incluye la URL.

Solo utilizamos tus datos para atender esta solicitud. Privacybeleid

Deel dit artikel

Deel dit artikel