KamoCRM

La sessione id smette di tornare allo script di pagina — lavori di base per maniglie sigillate

Fixkamo-internal
Shipped
24 settembre 2026 alle ore 00:09 UTC
Author
Kamo
Commit
3e3c3e7

*** è stata impostata leggibile (httpOnly:false) e diverse risposte hanno consegnato la sessione grezza id al browser. Lo script di pagina non può utilizzare la bandiera HttpOnly di un cookie se un endpoint legge il valore di nuovo: - /api/session/extend e /api/session/info ha restituito la sessioneInfo.sessionId, /api/user-info come tokenId, /api/debug/cookies come ***Valore. Ora ritornano un'anteprima di 8 caratteri (l'unico il consumatore era lo schermo del sistema Debug) o niente. - /valid è servito senza cancello di sessione e reso ogni cookie VALUE nella pagina — sulla server, che vede anche i cookie HttpOnly. Ora mostra nomi e dimensioni. - /api/session/extend impianti *** con httpOnly: true. Il browser lo invia ancora agli EventSources, <img> / <video> e /meet/join che dipendono da esso; lo script non può più leggerlo. Ora fallisce anche un biscotto che si e' piazzato leggibile. Lavoro a terra per il passo successivo, inerte fino a /api/validate inizia a emettere maniglie: - app/lib/sessionHandle.ts: la sessione di una scheda HANDLE è il id 128-hex sigillato con AES-256-GCM sotto una chiave derivata (HKDF) da SESSION HANDLE SECRET e una chiave casuale per-browser in un HttpOnly Biscotto KBK. Esattamente 128 caratteri, così ogni controllo client esistente lo accetta; inutile in qualsiasi altro browser; manomissione non riesce il tag. sessioneHandle.test.ts copre sigillo/aperto, straniero browser, manomissione, nessun segreto. - proxy.ts apre una maniglia che arriva in X-***-Token nel vero id per il percorso, quindi il ~180 percorsi che leggono che l'intestazione non ha bisogno di modifiche; una maniglia che non apre gocce sia l'intestazione che l'intestazione il cookie *** condiviso piuttosto che lasciare che il percorso ritorni alla sessione di un'altra scheda. The Il matcher ora include /api/:path* esplicitamente (la regola del file statico saltata /api/*.png). - /api/generate-otk guadagna scopo=ws (30 s) per WebSocket handshakes; logout mantiene la chiave del browser (le maniglie delle altre schede dipendono da esso). - k8s/deployment.yaml monta il kamo-internal-session-handle Secret (creato nel cluster).

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