🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónPlantillas con escape automático y sus excepciones
5 tareas · 40 min · Principiante
Un motor de plantillas con escape automático codifica cada salida sin que nadie lo pida. Es la mejor defensa por defecto que existe, y por eso lo que hay que auditar no son las salidas normales sino las excepciones. Tinajacoa te entrega la configuración de Twig, su extensión propia, una búsqueda de todo lo que desactiva el escape y la lista de dónde sale cada dato. Se separa la excepción justificada de la que abre una puerta.
Objetivo de la sala
Un motor de plantillas con escape automático codifica cada salida sin que nadie lo pida. Es la mejor defensa por defecto que existe, y por eso lo que hay que auditar no son las salidas normales sino las excepciones. Tinajacoa te entrega la configuración de Twig, su extensión propia, una búsqueda de todo lo que desactiva el escape y la lista de dónde sale cada dato. Se separa la excepción justificada de la que abre una puerta.Con el escape automático activo, cada {{ variable }} sale codificada para el contexto que el motor tiene configurado, normalmente HTML. Casi todos los motores modernos lo hacen: Twig, Jinja con su opción de autoescape, las plantillas de Django, Blade de Laravel con {{ }}. Eso quita de en medio el olvido, que es la causa más común de XSS.
Lo que no garantiza tiene dos caras. La primera, el contexto: el motor codifica para HTML, y si la variable está dentro de un script, de un estilo o de un atributo sin comillas sigue siendo el contexto equivocado (lo viste en la sala anterior). La segunda, las salidas de escape: cada motor permite desactivarlo, y ahí vuelve la responsabilidad a la persona. En Twig son el filtro raw, el bloque autoescape false, los filtros y funciones registrados con is_safe, los objetos Markup creados en el código y la estrategia name, que elige el escape según la extensión del archivo y no escapa nada en las plantillas .txt.
Responde para continuar
Un equipo dice que su portal no puede tener XSS porque Twig escapa todo de forma automática. ¿Qué tiene que revisar el auditor para aceptar o rebatir esa frase?
Ver pista de ayuda
El escape automático protege justo lo que no se toca; busca dónde se toca.
Abre el laboratorio y lee PortalExtension.php en la carpeta tinajacoa-plantillas. Los tres elementos registrados llevan is_safe => ['html'], lo que le dice a Twig que su resultado ya es HTML seguro y que no lo escape otra vez. Esa declaración solo es verdad si la función escapa por dentro todo lo que viene de fuera. Mira el cuerpo de cada una y, con la segunda búsqueda de excepciones.txt, con qué argumentos se llama.
Responde para continuar
¿Qué filtro de la extensión se declara seguro para HTML sin escapar los textos que recibe? Escribe su nombre.
Ver pista de ayuda
Uno escapa con htmlspecialchars; otro solo se llama con nombres fijos.
Lee la primera búsqueda de excepciones.txt y la plantilla del correo al final del mismo archivo. Para cada dato que sale sin escapar por esas excepciones, busca en origen-de-datos.txt quién lo escribe y qué se le hace antes. Una excepción es aceptable cuando el contenido no viene de nadie (textos fijos del código o valores del sistema) o cuando pasó por un sanitizador antes; no lo es cuando lo escribió un socio o un visitante y nadie lo tocó.
Responde para continuar
¿Cuántos datos distintos escritos por socios o visitantes salen sin escapar por esas excepciones y sin haber pasado por ningún sanitizador?
Ver pista de ayuda
Recorre la tabla de origen y descarta lo que viene del código, del sistema o del sanitizador.
La configuración usa la estrategia name, y CorreoAvisos.php envía el resultado de una plantilla como text/html. Las dos decisiones por separado parecen razonables; juntas, una plantilla que Twig trata como texto plano termina interpretada como HTML en el cliente de correo de cada socio.
Responde para continuar
¿Qué plantilla se procesa sin escape por su extensión y se envía como HTML? Escribe su nombre de archivo.
Ver pista de ayuda
Cruza la extensión de la plantilla con el tipo de contenido del envío.
Quitar las excepciones malas es el arreglo de hoy. Lo que evita la siguiente es una regla del proyecto sobre cuándo se permite desactivar el escape y cómo se nota en una revisión.
Responde para continuar
¿Qué política sostiene el arreglo en el portal de Tinajacoa?
Ver pista de ayuda
La excepción no se prohíbe del todo: se justifica y se vigila.
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.