Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Secretos y lógica de autorización en el cliente

5 tareas · 40 min · Principiante

Todo lo que se compila para el navegador se entrega, completo, a quien abra la página. Eso incluye las variables de configuración y las reglas que deciden qué pantalla ve cada rol. La app de pacientes de Turnoverde se compila con Vite. Te entregan su archivo de variables de producción, el catálogo de credenciales, una búsqueda en lo publicado, sus rutas y el registro del servidor para las rutas de administración.

0 de 5 · 0%

Objetivo de la sala

Todo lo que se compila para el navegador se entrega, completo, a quien abra la página. Eso incluye las variables de configuración y las reglas que deciden qué pantalla ve cada rol. La app de pacientes de Turnoverde se compila con Vite. Te entregan su archivo de variables de producción, el catálogo de credenciales, una búsqueda en lo publicado, sus rutas y el registro del servidor para las rutas de administración.

Las herramientas de compilación de aplicaciones de una sola página leen variables de entorno y las sustituyen por su valor dentro del código al compilar. Para no filtrar todo el entorno, solo exponen al navegador las que llevan un prefijo acordado: VITE_ en Vite, NEXT_PUBLIC_ en Next.js, REACT_APP_ en Create React App. Una variable con ese prefijo deja de ser configuración y pasa a ser texto dentro de un archivo JavaScript que cualquiera descarga. Por eso esas variables nunca deben llevar datos sensibles.

No todo lo que parece una clave es secreto. Muchos proveedores emiten claves públicas pensadas para el navegador, limitadas por dominio o por servicio. La pregunta no es si el valor está en el cliente, sino si su dueño lo diseñó para estar ahí. MITRE agrupa la credencial secreta incrustada en el código bajo CWE-798.

Responde para continuar

¿Qué decide si una variable con el prefijo `VITE_` es un hallazgo?

Ver pista de ayuda

El prefijo ya garantiza que el valor está en el paquete publicado.

Abre el laboratorio. Cruza env-produccion.txt con catalogo-credenciales.txt, y confirma con busqueda-en-paquete.txt qué valores aparecen de verdad en los archivos publicados. Una variable sin el prefijo no llega al paquete aunque esté en el mismo archivo.

Responde para continuar

¿Qué variable del archivo de producción pone en el paquete publicado una credencial que su catálogo marca solo para servidor? Escríbela tal como aparece.

Ver pista de ayuda

Hay dos credenciales de solo servidor; una de ellas no aparece en la búsqueda.

En rutas.jsx, el panel de administración se muestra solo si el rol guardado en localStorage es admin. Ese valor lo controla el navegador: cualquiera puede cambiarlo, o llamar a la API sin pasar por la app. Una guarda de rutas en el cliente es una comodidad de interfaz; quien autoriza es el servidor, en cada petición, con el rol que él mismo lee de la sesión. MITRE describe el error de confiar en el cliente para una regla de seguridad como CWE-602.

Lee registro-api-admin.txt. El rol que aparece en cada línea es el de la sesión en el servidor.

Responde para continuar

¿Qué cuenta sin rol de administración logró que el servidor ejecutara una acción administrativa? Escríbela tal como aparece en el registro.

Ver pista de ayuda

Separa las rutas de administración que responden 403 a otros roles de las que no.

El registro muestra que una ruta de administración sí comprueba el rol y otras no. El equipo propone dos cambios: mover el rol de localStorage a una cookie, y añadir la comprobación de rol a las rutas que no la tienen.

Responde para continuar

¿Cuál de los dos cambios cierra el hallazgo de autorización?

Ver pista de ayuda

El servidor ya sabe el rol de cada sesión; falta que lo use.

La llave privada de la pasarela está en dos archivos publicados, y en las versiones anteriores de la app que puedan estar en cachés y copias.

Responde para continuar

¿Qué secuencia corresponde a la llave privada de pagos expuesta en el paquete?

Ver pista de ayuda

Lo publicado ya se descargó; borrarlo no lo hace secreto otra vez.

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