Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Plantillas 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.

0 de 5 · 0%

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.

Inicia sesión para registrar tus puntos y progreso en el ranking.

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