Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

El inquilino en cada consulta y en cada caché

5 tareas · 40 min · Principiante

En el modelo de fila, el aislamiento depende de que cada consulta lleve el inquilino correcto, y de que ese inquilino salga de un lugar en el que el cliente no puede escribir. Una ferretería de Arcaduz se quejó de que su lista de precios traía descuentos que no son suyos. Tienes el código que decide el inquilino, el filtro automático de las consultas, el buscador, el servicio de precios y cuarenta minutos de la capa de caché.

0 de 5 · 0%

Objetivo de la sala

En el modelo de fila, el aislamiento depende de que cada consulta lleve el inquilino correcto, y de que ese inquilino salga de un lugar en el que el cliente no puede escribir. Una ferretería de Arcaduz se quejó de que su lista de precios traía descuentos que no son suyos. Tienes el código que decide el inquilino, el filtro automático de las consultas, el buscador, el servicio de precios y cuarenta minutos de la capa de caché.

Antes de filtrar por inquilino, la aplicación tiene que saber cuál es. Esa decisión es de autorización y sigue la misma regla que cualquier otra: se toma de algo que el servidor verificó (la sesión de la persona que inició sesión, el token que emitió el propio proveedor, la pertenencia vigente de esa cuenta a ese cliente), nunca de algo que el cliente envía y puede cambiar, como una cabecera, un parámetro o un subdominio sin comprobar.

Si un cliente necesita operar varias sucursales o empresas, la forma correcta no es dejarle elegir el inquilino libremente: es registrar a qué inquilinos pertenece la cuenta y comprobar en el servidor que el elegido está en esa lista.

Responde para continuar

Un ERP integrado pide trabajar con dos sucursales que son dos inquilinos distintos. ¿Cómo debe decidir la API el inquilino de cada petición?

Ver pista de ayuda

¿Quién puede escribir lo que llega en una cabecera o en una URL?

Abre ResolverInquilino.php. El panel web hace lo correcto. Mira la otra rama, la de las integraciones.

Responde para continuar

¿Qué cabecera de la petición decide el inquilino en la API de pedidos cuando viene? Escribe su nombre completo.

Muchos frameworks permiten registrar un filtro automático en el modelo de datos, de modo que toda consulta de ese modelo lleve la condición del inquilino sin que nadie tenga que escribirla. Es una buena red, pero el mismo framework ofrece la forma de quitarla para un caso puntual, y cada uso de esa salida es una consulta sin red. En una revisión se buscan todas, y cada una tiene que justificar por qué cruza clientes y quién la autorizó.

Las consultas escritas a mano no pasan por ese filtro: llevan la condición explícita o no la llevan. Compara BusquedaRapidaController.php con ReporteRotacionController.php.

Responde para continuar

¿Qué método usa el buscador de productos para quitar el filtro por inquilino? Escribe su nombre sin paréntesis.

Una caché guarda una respuesta ya calculada bajo una clave y la entrega a la siguiente petición que pida la misma clave. No sabe quién pregunta: si el resultado depende del cliente y la clave no incluye al cliente, la segunda petición recibe lo que se calculó para el primero. MITRE lo cataloga como uso de una caché que contiene información sensible (CWE-524), dentro de la exposición de un recurso a la esfera equivocada (CWE-668). La regla práctica: si el valor o su autorización cambian por cliente, el identificador del cliente va en la clave; lo que de verdad es común a todos va en un espacio de claves global declarado como tal.

Lee PreciosCategoria.php y luego registro-cache.txt con inquilinos.txt al lado.

Responde para continuar

¿Qué cliente recibió desde la caché precios calculados para otro? Escribe su slug.

El equipo propone bajar la duración de la clave de precios de 15 minutos a 1 minuto «para que el cruce dure menos».

Responde para continuar

¿Qué le respondes?

Ver pista de ayuda

Mira cómo arma su clave resumenTablero en el mismo archivo.

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