- Se descapó
- 28 de agosto de 2026 a las 2:59 UTC
- Autor
- Kamo
- Compromit
- ce4d901
"Abir en una nueva pestaña" era "window".open(location.href, 'Eblank', 'noopener,noreferrer') . El identificador de la sesión no está en una galleta, sino en sesionesStorage, por cuenta, porque organizaciones sin un dominio propio comparten un anfitrión y una galleta por origen sería una sola ranura cualquier pestaña podría sobrescribir. "window.open" legacy-clones el el depósito sólo mientras la relación de apertura sobrevive, y Noopener (implicado también por "noreferrer" se corta exactamente eso. La nueva pestaña comenzó, por lo tanto, con un Tienda vacía, no encontró sesión y rebotó en la página de inicio de sesión. Parecía que funcionaba porque estaba siendo rescatado: la pestaña aterrizaba en el login.*, donde auto-login leyó la galleta *** solo al anfitrión y lo envió de nuevo en el org. Eliminar eso es lo que expuso esto, por lo que el botón se arregla más bien que la redirección restaurada nunca había llevado una sesión propia. Ahora utiliza el mismo apretón de manos de una sola vez que cualquier otra entrada de la policía cruzada: abierto de:blanqueo sincronizado dentro del clic (una espera primero pierde transitoria activación y WebKit bloquea la ventana emergente), acuñar un OTK, luego navegar a /validar con la página actual en "next". La OTK resuelve la sesión de SAME, por lo que el nuevo La pestaña es realmente otro ejemplo del mismo org, en la página de la que se abrió. El propósito de la OTK se registra como un propósito de carga de documentos. Un propósito no incluido en la lista no es rechazado - cae silenciosamente de nuevo a un TTL de 10s, en el que /api/validate no se puede confiar sobrevivir, ya que lee la llave de un Redis REPLICA y vuelve a intentarlo replicación de la percha antes incluso de la aplicación incluso botas. Tres cosas de las notas de segunda ventana advertidas y esto evita: la clave continúa /validado con el destino en el .nextt, porque el borde reescribe cualquier "?otk=" solicitud a /validar y desecha la ruta original; el objetivo es una URL absoluta mantenido en una variable, debido a que un literal asignado a ".location.href" falle check-client-navigation y el Docker construir con ella; y /validate es un sendero anterior a la sesión, para que no firme la balanza fresca mientras no está autenticado.