🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónLas salidas de escape que desactivan la protección
5 tareas · 40 min · Principiante
Cada framework trae una puerta para pintar HTML crudo, y cada puerta tiene un nombre que se puede buscar. Encontrarlas es fácil; lo que exige criterio es decidir cuáles son un hallazgo. El equipo de plataforma de Turnoverde corrió la búsqueda en sus tres repositorios y te entrega los resultados, el código alrededor de cada uno y quién escribe cada dato. Se clasifica como lo haría quien tiene que cerrar la lista.
Objetivo de la sala
Cada framework trae una puerta para pintar HTML crudo, y cada puerta tiene un nombre que se puede buscar. Encontrarlas es fácil; lo que exige criterio es decidir cuáles son un hallazgo. El equipo de plataforma de Turnoverde corrió la búsqueda en sus tres repositorios y te entrega los resultados, el código alrededor de cada uno y quién escribe cada dato. Se clasifica como lo haría quien tiene que cerrar la lista.React ofrece dangerouslySetInnerHTML, que recibe un objeto con la clave __html y escribe ese texto como marcado. Vue tiene la directiva v-html; Svelte, la etiqueta {@html ...}; Angular, los métodos bypassSecurityTrust... de su servicio de saneado, que marcan un valor como revisado para que el saneador no lo toque. Todos existen por razones legítimas: un aviso legal escrito por el equipo, un ícono en SVG, contenido de un gestor interno ya sanitizado.
Hay una quinta vía que ninguna búsqueda de directivas encuentra: tomar un elemento del DOM por referencia (ref en React y Vue, ElementRef en Angular) y asignarle innerHTML a mano. Ahí el framework ni siquiera se entera; el código habla directamente con el navegador. MITRE clasifica el resultado de cualquiera de estas vías, cuando el dato es de alguien externo, como CWE-79.
Responde para continuar
¿Qué decide si un uso de `v-html` es un hallazgo?
Ver pista de ayuda
La directiva es la misma en los usos buenos y en los malos.
Abre el laboratorio. En busqueda-sumideros.txt está la salida de la búsqueda; en origen-de-datos.txt, quién escribe cada dato; en extractos.txt, el código alrededor de los resultados más dudosos. El encargo.txt define quién cuenta como usuario externo.
Empieza por la aplicación que usan los pacientes.
Responde para continuar
¿Qué archivo de la app de pacientes pinta como marcado un texto que puede escribir cualquier paciente? Escribe su nombre con la extensión.
Ver pista de ayuda
Busca el dato que el origen describe como escrito por cualquier paciente y guardado tal cual.
Recorre los ocho resultados y marca como hallazgo los que cumplen dos condiciones a la vez: el dato lo escribe un usuario externo y no pasa por un sanitizador antes de pintarse (ni en el servidor ni en el cliente). Una constante del código no es un hallazgo; tampoco un contenido interno que se sanitiza al guardar.
Responde para continuar
¿Cuántos resultados de la búsqueda pintan como marcado un dato de usuario externo sin pasar por un sanitizador?
Ver pista de ayuda
Cuenta también los de Vue y Angular, no solo los de React.
Los dos resultados de facturacion/ usan el mismo método. Uno recibe un mapa fijo de íconos que vive en el propio archivo; el otro, el cuerpo de una plantilla de correo que escribe cada consultorio. El comentario de este último explica por qué se saltó el saneador: la vista previa debía conservar los estilos en línea.
Responde para continuar
¿Qué diferencia a los dos usos de `bypassSecurityTrustHtml` en el módulo de facturación?
Ver pista de ayuda
El método solo es seguro si alguien de verdad revisó el valor.
Uno de los resultados no usa ninguna directiva ni método del framework: escribe directamente en un elemento del DOM. Su comentario da la razón (un componente de terceros que no admite componentes), y el dato que escribe lo pone el administrador de cada consultorio. Esta vía es la más fácil de pasar por alto en una revisión que solo busca las palabras del framework.
Responde para continuar
¿Qué componente escribe un dato externo en el documento por referencia, sin pasar por la plantilla del framework? Escribe su nombre con la extensión.
Ver pista de ayuda
Busca la asignación directa a innerHTML en los extractos.
Whoami-Labs Pro
Whoami-Labs Pro utiliza cookies
Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.