🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónCookies con prefijo y CORS
5 tareas · 40 min · Principiante
Dos configuraciones deciden a quién le llegan las credenciales del navegador: los atributos de las cookies y la política CORS de la API. Si fallan, un sitio ajeno puede pedirle a la API los datos de alguien que tiene la sesión abierta. Aquí se leen las cookies que emite la tienda de Panadería Quebradillo, la lista de orígenes que la API debe aceptar y cuatro respuestas guardadas de la API. Los atributos básicos de las cookies ya se vieron en el módulo de pruebas web; aquí se añade el prefijo y la combinación con CORS. No se envía ninguna petición.
Objetivo de la sala
Dos configuraciones deciden a quién le llegan las credenciales del navegador: los atributos de las cookies y la política CORS de la API. Si fallan, un sitio ajeno puede pedirle a la API los datos de alguien que tiene la sesión abierta. Aquí se leen las cookies que emite la tienda de Panadería Quebradillo, la lista de orígenes que la API debe aceptar y cuatro respuestas guardadas de la API. Los atributos básicos de las cookies ya se vieron en el módulo de pruebas web; aquí se añade el prefijo y la combinación con CORS. No se envía ninguna petición.Los atributos Secure, HttpOnly y SameSite los pone quien emite la cookie, pero un navegador no puede saber si otro subdominio, con un fallo propio, la sobrescribió. Los prefijos son la forma de pedirle al navegador que lo imponga: el prefijo __Secure- obliga a Secure; el prefijo __Host- exige además que no lleve atributo Domain y que su Path sea /. Una cookie con __Host- queda atada al host exacto que la emitió: no viaja a los subdominios ni la puede fijar uno de ellos.
Una cookie de sesión con Domain= del dominio padre viaja a todos los subdominios, incluidos los viejos y mal mantenidos. Eso no es un fallo por sí solo, pero amplía a quién le llega.
Responde para continuar
¿Qué exige el navegador a una cookie cuyo nombre empieza por __Host-?
Ver pista de ayuda
Es el prefijo que ata la cookie al host exacto que la emitió.
SameSite controla si la cookie viaja en peticiones que vienen de otros sitios. Con Lax viaja en navegaciones normales y no en peticiones incrustadas; con Strict, solo dentro del mismo sitio. SameSite=None la deja viajar en todos los contextos y, por eso, los navegadores exigen que vaya junto con Secure; sin él, la cookie se rechaza o queda sin efecto. Una cookie con esa combinación mal puesta es un descuido de configuración, y se pide corregirla o, si no hace falta que viaje entre sitios, usar Lax.
Abre set-cookie-tienda.txt y revisa los tres Set-Cookie.
Responde para continuar
¿Qué cookie de set-cookie-tienda.txt lleva SameSite=None sin el atributo Secure? Escribe su nombre.
Ver pista de ayuda
De las tres líneas, solo una dice None. Las otras dos usan Lax.
Por defecto, el navegador impide que una página de un origen lea la respuesta de otro (política del mismo origen). CORS es la excepción que la API autoriza con la cabecera Access-Control-Allow-Origin, y es la API quien decide a quién se lo permite. CORS no protege a la API de que le llegue una petición: protege los datos del usuario frente a páginas ajenas que quieran leer la respuesta.
Dos reglas mandan. Con credenciales (cookies), el valor no puede ser el comodín *: el navegador bloquea la respuesta y exige un origen concreto. Y si el servidor elige el origen según la petición, debe añadir Vary: Origin, para que las cachés no mezclen respuestas. El error peligroso no es el comodín (el navegador lo frena con credenciales), es el servidor que refleja cualquier origen y además permite credenciales: entonces cualquier sitio puede leer datos de un usuario con la sesión abierta.
Responde para continuar
Una API responde Access-Control-Allow-Credentials true y copia en Access-Control-Allow-Origin el origen que le llegue. ¿Qué riesgo hay?
Ver pista de ayuda
Una cosa es el comodín con credenciales, que el navegador bloquea, y otra copiar el origen recibido.
La lista de orígenes permitidos es una decisión del equipo: aquí son dos, la tienda y el panel. Todo lo demás con credenciales es un hallazgo. Se lee en las respuestas guardadas, comparando origen pedido y origen permitido, y se contrasta con la lista.
Abre origenes-permitidos.txt y cors-api.txt. En cuatro casos de la revisión hay uno que la API acepta con credenciales y que no debería.
Responde para continuar
¿Qué origen, que no figura en la lista permitida, recibe de la API un permiso con credenciales? Escribe solo el host, sin https.
Ver pista de ayuda
El caso 1 está en la lista y el caso 4 no usa credenciales. Mira los otros dos; uno de ellos no es un host.
No toda configuración de CORS es un hallazgo. El caso 4 responde con un comodín a datos públicos del catálogo, sin cookies: es lo que se espera de un recurso público. El caso 3 acepta el origen especial null con credenciales, que puede venir de documentos locales o marcos aislados, y también se anota. Y la cookie sin Secure es un descuido de configuración, bastante menor que lo que hace el caso 2.
El informe ordena por lo que un tercero puede hacer con los datos reales de un usuario real.
Responde para continuar
¿Con qué hallazgo abre el informe de CORS de la tienda?
Ver pista de ayuda
Pregúntate qué pueden leer unos datos reales de una persona real con cada configuración.
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.