🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónMensajes entre ventanas: validar origen y contenido
5 tareas · 40 min · Principiante
La política del mismo origen impide que dos páginas de orígenes distintos se lean entre sí, y por eso el navegador ofrece un canal controlado para que conversen: postMessage. El canal es seguro solo si quien recibe pregunta quién le escribe y qué le escribe, y si quien envía dice a quién. Empleos Tangaral recibió la queja de un puntaje de prueba psicotécnica que nadie cree. Se leen sus receptores, sus emisores, los orígenes que deberían hablarle y el registro de diagnóstico de mensajes.
Objetivo de la sala
La política del mismo origen impide que dos páginas de orígenes distintos se lean entre sí, y por eso el navegador ofrece un canal controlado para que conversen: postMessage. El canal es seguro solo si quien recibe pregunta quién le escribe y qué le escribe, y si quien envía dice a quién. Empleos Tangaral recibió la queja de un puntaje de prueba psicotécnica que nadie cree. Se leen sus receptores, sus emisores, los orígenes que deberían hablarle y el registro de diagnóstico de mensajes.Cuando una ventana llama a postMessage, el navegador entrega a la otra un evento message con tres datos útiles: data, lo que se envió; origin, el origen de la página que lo envió; y source, una referencia a esa ventana. El valor de origin lo pone el navegador y la página emisora no lo puede falsificar. Lo que el navegador no hace es filtrar: entrega el mensaje a cualquier receptor que esté escuchando, venga de donde venga. La decisión de aceptar o descartar es del código del receptor.
Responde para continuar
¿Qué hay que saber del campo origin del evento message?
Ver pista de ayuda
Una parte es una garantía del navegador y la otra es una obligación del código.
Un receptor que no compara origin acepta mensajes de cualquier ventana que tenga una referencia a la página: un marco que ella incrusta, una ventana que la abrió o que ella abrió. Si además pinta lo recibido con innerHTML, el mensaje se convierte en contenido ejecutable dentro del portal: un XSS cuya entrada es otra ventana. La falta de comprobación del origen se clasifica como CWE-346 (error de validación de origen).
Abre receptores.js y origenes-esperados.txt.
Responde para continuar
¿Qué receptor acepta mensajes sin comprobar quién los envía? Escribe el nombre de la función.
Ver pista de ayuda
Busca el receptor que nunca menciona e.origin.
Comparar el origen con funciones de texto parciales (contiene, empieza por, termina en) deja pasar orígenes que nadie autorizó: cualquiera puede registrar un dominio cuyo nombre contenga o termine en el texto que se busca. La comparación correcta es de igualdad exacta contra una lista corta de orígenes completos, con esquema y host. Cruza el receptor de resultados con registro-mensajes.txt.
Responde para continuar
¿Desde qué origen llegó el resultado de prueba que el portal aceptó sin venir del proveedor? Escríbelo con esquema.
Ver pista de ayuda
Hay dos resultados aceptados del proveedor real y uno más; el descartado no cuenta.
El problema tiene otra cara: el emisor. postMessage recibe como segundo argumento el origen al que se dirige el mensaje, y el navegador solo lo entrega si la ventana de destino tiene ese origen en ese momento. Con "*" se entrega a quien esté ahí. Si la página que envía puede quedar dentro de un marco de un sitio cualquiera, o si la ventana de destino pudo navegar a otra dirección, el dato termina en manos ajenas. Abre emisores.js.
Responde para continuar
¿Qué función envía datos personales del candidato a cualquier ventana que contenga la página? Escribe su nombre.
Ver pista de ayuda
Busca el emisor que no dice a qué origen va el mensaje.
El tercer receptor del archivo es el modelo a seguir: origen exacto, ventana esperada y forma del dato validada antes de usarlo. A eso se suma no pintar nunca el contenido de un mensaje como HTML. Y hay un problema de diseño que ninguna comprobación arregla: un puntaje que decide una contratación no debería llegar por un mensaje del navegador, sino de servidor a servidor.
Responde para continuar
¿Qué propones para los receptores del área del candidato?
Ver pista de ayuda
Tómalo del receptor de la sesión y súmale cómo se pinta el texto.
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.