KamoCRM

Browser WebSockets autenticare con una chiave di una volta, mai il token di sessione

Fixkamo-internal
Shipped
24 settembre 2026 alle ore 01:31 UTC
Author
Kamo
Commit
46191c4

I 15 posti che un gancio apre una connessione STOMP/SockJS a MediaService (media. EmailService (attraverso la /email-ws rewrite) mettere il grezzo 128-char *** sessione id sulla stringa di query (***= <token>) — Il registro di accesso di Traefik l'ha tenuto in chiaro per tutto il tempo che ne mantiene uno. Che id è anche non più leggibile dallo script di pagina a tutti (app/lib/session Maniglia lo sigilla), quindi il valore era per scomparire da questi ganci indipendentemente. Un gancio ora minge una chiave una volta invece: Non e' vero. POST /api/generate-otk?purpose=ws (una chiave 64-hex-char, 30 s TTL) e la consegna al cliente stompjs `prima del Connect`, che stompjs attende prima di ogni connessione E ogni ricollegamento — quindi un gancio che ricollega un'ora dopo ancora mints una chiave fresca piuttosto che rigiocare uno stallo. Ogni webSocketFactory legge l'ultima chiave al momento in cui si costruisce l'URL di SockJS (`?otk=♠key>`); a la menta fallita tenta ancora la connessione senza chiave, che il backend rifiuta, e stompjs retries dopo riconnettereDelay. L'esistente "è lì una sessione a tutti" cancelli sono intatti — diversi ganci ancora pronta sessioneStorage direttamente per quel controllo di veridicità, che va bene e non correlato a valore in uscita sul filo. ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** proibirlo) che ancora costruisce un URL con `***=`, puntando su mintWsKey. Ha trovato esattamente questi 15 siti su origine/principe; nessuno rimane, e il ripristino di un vecchio gancio lo trasforma in rosso. MediaService (b0e08ac2) e EmailService (279723a4) già accettano `?otk=` — controllati prima e non consumato, una chiave sconosciuta ha rifiutato in modo definitivo, l'eredità `?***=` ancora accettato per i clienti anziani — ed entrambi gestiscono quei commit. Test: wssionAuth.test.ts, **************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** (vitest ora raccoglie app/hooks/**/ tests ); type/@stomp stompjs.d.ts dichiara prima diConnect.

All changes

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing