Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Lo que el framework protege por defecto

5 tareas · 40 min · Principiante

React, Vue y Angular convierten en texto casi todo lo que pintan, y por eso muchos equipos creen que el XSS ya no es asunto suyo. La protección es real, pero tiene bordes precisos. Turnoverde, una plataforma de agendamiento de citas para consultorios, te entrega tres componentes de sus tres aplicaciones, el origen de cada campo y la tabla de pruebas de su equipo de QA. Se trata de separar lo que el framework ya resuelve de lo que sigue siendo trabajo del equipo.

0 de 5 · 0%

Objetivo de la sala

React, Vue y Angular convierten en texto casi todo lo que pintan, y por eso muchos equipos creen que el XSS ya no es asunto suyo. La protección es real, pero tiene bordes precisos. Turnoverde, una plataforma de agendamiento de citas para consultorios, te entrega tres componentes de sus tres aplicaciones, el origen de cada campo y la tabla de pruebas de su equipo de QA. Se trata de separar lo que el framework ya resuelve de lo que sigue siendo trabajo del equipo.

En una aplicación de una sola página el HTML no lo arma el servidor: lo arma el navegador a partir de componentes. Cuando un componente escribe un dato entre llaves ({dato} en JSX, {{ dato }} en las plantillas de Vue y Angular), el framework no pega una cadena dentro del documento: crea un nodo de texto o asigna una propiedad del DOM. El navegador muestra ese valor como caracteres, aunque traiga signos de menor y mayor. Lo mismo pasa con un atributo enlazado, como un title: el valor queda dentro del atributo y no puede cerrarlo para abrir otra etiqueta.

Esa es la protección por defecto, y cubre la mayoría de los casos del día a día: nombres, comentarios, notas, títulos. Lo importante es saber por qué funciona: el framework separa la estructura (la plantilla, escrita por el equipo) de los datos (lo que llega en tiempo de ejecución). Mientras el dato viaje por esas vías, no se interpreta como marcado.

Responde para continuar

Un componente de React pinta `<h2>{paciente.nombre}</h2>` y el nombre guardado trae etiquetas de negrita. ¿Qué verá quien abra el perfil?

Ver pista de ayuda

El dato entre llaves termina en un nodo de texto.

Escapar resuelve un problema concreto: que un dato rompa la estructura del documento. No resuelve otro: que el dato, bien colocado dentro de un atributo, sea en sí mismo peligroso. Un enlace es el ejemplo clásico. El valor de un href puede quedar perfectamente escapado y aun así empezar por un esquema que el navegador ejecuta en vez de navegar. Vue, por ejemplo, no revisa las URL que se enlazan a un atributo: esa validación le toca al equipo, idealmente en el servidor antes de guardar, para que proteja también a otros clientes como la app móvil.

Abre el laboratorio. Lee TarjetaCita.vue, el origen-de-campos.txt (quién escribe cada campo) y citas-muestra.json. Luego cruza con la fila de QA que habla del enlace.

Responde para continuar

¿Qué cita de la muestra lleva un enlace de videollamada con un esquema que el escape del framework deja pasar? Escribe su código.

Ver pista de ayuda

Fíjate en cómo empieza cada valor del enlace, no en si usa https o http.

La tabla de pruebas-qa.txt es la mejor evidencia que tiene el cliente: valores con marcado inofensivo metidos en cada campo y lo que se vio en el navegador. Clasifica cada fila en tres grupos: el valor se mostró como texto sin tocarlo, el framework lo modificó por seguridad (quitó o neutralizó algo) o el valor quedó activo.

Responde para continuar

¿Cuántas pruebas de la tabla mostraron el valor de prueba como texto literal, sin que el framework quitara ni cambiara nada?

Ver pista de ayuda

Las filas que dicen «tal cual» o «como texto» van juntas; las que hablan de quitar, prefijar o conservar un esquema van aparte.

Angular va un paso más allá que React y Vue en un caso concreto: si se enlaza un valor a la propiedad innerHTML o a una URL, lo pasa por su propio saneador antes de escribirlo. Conserva el marcado que considera seguro, quita lo peligroso y, en modo de desarrollo, deja un aviso en la consola del navegador. Con las URL hace algo parecido: marca como inseguras las que no tienen un esquema aceptado.

Lee las filas A-02 y A-03 de la tabla junto con factura.component.html.

Responde para continuar

¿Cómo se debe leer el resultado de la fila A-02 en el informe?

Ver pista de ayuda

Separa lo que pasó en el documento de lo que revela sobre el origen del dato.

El ticket TV-2231 pregunta si el problema del enlace es «del framework o nuestro». La respuesta decide quién lo arregla y dónde.

Responde para continuar

¿Qué arreglo cierra el hallazgo del enlace de videollamada?

Ver pista de ayuda

La validación del esquema es responsabilidad del equipo, no del escape.

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