- Spegnimento
- 28 agosto 2026 alle ore 02:59 UTC
- Autore
- Kamo
- Impegno
- ce4d901
"Aperta nella nuova scheda" era `window.open(location.href, ' blank', 'noopener,noreferrer')`. La sessione id non è in un cookie — vive in sessioneStorage, per scheda, perché organizzazioni senza un dominio della propria parte un host e un cookie per-origine sarebbe una singola slot qualsiasi scheda potrebbe sovrascrivere. `window.open` legacy-clones il deposito capannone solo mentre il rapporto di apertura sopravvive, e `noopener` (implied di `noreferrer` too) severs esattamente quello. La nuova scheda è quindi iniziata con una vuote negozio, trovato nessuna sessione, e rimbalzato alla pagina di login. Sembrava che funzionasse perché era stato salvato: la scheda è atterrata sul login.*, dove l'auto-login ha letto il cookie di sola host *** e l'ha inoltrato di nuovo Org. Rimuovere che in avanti è quello che ha esposto questo, quindi il pulsante è fissato piuttosto che il redirect restaurato — non aveva mai portato una sessione propria. Ora utilizza lo stesso handshake di una volta-chiave come ogni altra voce cross-tab: aperto circa:blank sincronamente all'interno del clic (un attendere prima perde transitorio attivazione e WebKit blocca il popup), menta un OTK, quindi navigare a /validate con la pagina corrente in `next`. OTK si risolve alla sessione SAME, quindi la nuova scheda è veramente un'altra istanza dello stesso org, sulla pagina da cui è stato aperto. `newtab` è registrato come scopo document-load OTK. Uno scopo non elencato non è respinto — rientra silenziosamente ad un TTL 10s, che /api/validate non può contare su sopravvivere, dal momento che legge la chiave di nuovo da un Redis REPLICA e si ripercorre attraverso replica di ritardo prima che l'app anche stivali. Tre cose che la seconda finestra nota avvertito e questo evita: la chiave va avanti /validate con la destinazione in `next`, perché il bordo riscrive qualsiasi `?otk=` richiesta di /validate e scarta il percorso originale; l'obiettivo è un URL assoluto tenuto in una variabile, perché un letterale assegnato a `.location.href ` non riesce check-client-navigation e il Docker costruire con esso; e /validate è un percorso pre-sessione, in modo da non firmare la scheda fresca fuori mentre è non autenticato.