Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Autorización por mensaje y por canal

5 tareas · 40 min · Principiante

Saber quién abrió la conexión no dice qué puede hacer con ella. Dentro del canal llegan peticiones disfrazadas de mensajes —unirse a la mudanza de alguien, cambiar una franja de llegada, cancelar— y cada una necesita la misma pregunta que haría un controlador HTTP. En Trasteos Corotos tres mudanzas amanecieron con la franja cambiada sin que nadie lo pidiera. Tienes el manejador de mensajes, la tabla de mudanzas por cuenta y el registro del día.

0 de 5 · 0%

Objetivo de la sala

Saber quién abrió la conexión no dice qué puede hacer con ella. Dentro del canal llegan peticiones disfrazadas de mensajes —unirse a la mudanza de alguien, cambiar una franja de llegada, cancelar— y cada una necesita la misma pregunta que haría un controlador HTTP. En Trasteos Corotos tres mudanzas amanecieron con la franja cambiada sin que nadie lo pidiera. Tienes el manejador de mensajes, la tabla de mudanzas por cuenta y el registro del día.

En una aplicación web clásica nadie discute que cada ruta comprueba si quien llama puede hacer eso sobre ese recurso. En un canal persistente es fácil olvidarlo, porque el código de mensajes vive en otro archivo, a veces en otro servicio, y empieza con una conexión que ya pasó por el inicio de sesión. Pero un mensaje del tipo «únete al canal de la mudanza 40862» es exactamente lo mismo que pedir esa mudanza por su identificador: si nadie comprueba la relación entre la cuenta y el recurso, es una referencia directa insegura con otro transporte.

Hay dos puntos de control. Al suscribirse a un canal, que decide qué podrá escuchar la conexión. Y en cada mensaje que pide una acción, que decide qué podrá cambiar. Los dos se resuelven con datos que tiene el servidor —la identidad que asoció a la conexión y sus propias tablas—, nunca con lo que el mensaje dice de sí mismo.

Responde para continuar

Si la conexión ya se autenticó en el handshake, ¿qué falta para aceptar un mensaje de suscripción a un canal?

Ver pista de ayuda

Es la misma comprobación que harías antes de devolver un recurso por su identificador.

Abre el laboratorio. En canales.js la suscripción solo comprueba una cosa. Cruza cada mensaje de suscripción de registro-mensajes.txt con mudanzas-por-cuenta.txt.

Responde para continuar

¿A qué canal se unió una cuenta de cliente que no corresponde a ninguna de sus mudanzas? Escríbelo tal como aparece.

Ver pista de ayuda

Hay cinco suscripciones de clientes; una de ellas es de una mudanza que pertenece a otra cuenta.

Ahora la acción de reprogramar. Fíjate en qué dato usa el código para decidir si puede cambiarse la franja, y de dónde sale ese dato. Compáralo con cómo se decide la cancelación unas líneas más abajo, que sí está bien resuelta.

Responde para continuar

¿Qué campo del mensaje decide, en el código, si quien lo envía puede reprogramar? Escribe su nombre.

Ver pista de ayuda

Busca la condición dentro del bloque de reprogramar.

Mide el alcance en el registro. Cuenta solo las reprogramaciones que se aplicaron y que envió una cuenta cuyo rol, en la tabla del servidor, es de cliente. Los intentos ignorados no cuentan, y las de la cuenta de coordinación son legítimas.

Responde para continuar

¿Cuántas reprogramaciones enviadas por cuentas de cliente se aplicaron ese día?

Ver pista de ayuda

Filtra las líneas de reprogramar con resultado aplicado y mira el rol de cada cuenta en la tabla.

La cancelación del mismo archivo muestra el patrón correcto: busca el recurso en el servidor y lo compara con la cuenta asociada a la conexión. Falta extenderlo a todo lo demás y no perder de vista que el canal dura horas: si un coordinador deja de serlo a media jornada, su conexión no debería seguir teniendo el permiso.

Responde para continuar

¿Qué arreglo pedirías para el manejador de mensajes de Corotos?

Ver pista de ayuda

Lo que el cliente controla no puede decidir un permiso, aunque vaya firmado o escondido.

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