- Verschickt
- 24. September 2026 um 00:09 UTC
- Autor
- Kamo
- Commit
- 3e3c3e7
*** wurde lesbar (httpOnly:false) gesetzt und mehrere Antworten gaben die rohe Session-ID an die Browser. Seitenskript kann das HttpOnly-Flag nicht verwenden, wenn ein Endpunkt den Wert wieder ausliest: - /api/session/extend und /api/session/info zurückgegeben sessionInfo.sessionId, /api/user-info zurückgegeben es als TokenId, /api/debug/cookies als ***Value. Sie geben jetzt eine 8-Zeichen-Vorschau zurück (die einzige Verbraucher war der System Debug-Bildschirm) oder nichts. - /valid wird ohne Session-Gate serviert und jedes Cookie VALUE in die Seite . Server, der auch HttpOnly Cookies sieht. Es zeigt jetzt Namen und Größen. - /api/Session/Extend-Pflanzen *** mit httpOnly: true. Der Browser sendet es immer noch an die EventSources, <img&h/video" und /meet/join, die davon abhängen; Skript kann es nicht mehr lesen. - **************** verfehlt jetzt auch jeden *** Cookie gepflanzt lesbar. Grundvorausschau für den nächsten Schritt, inert bis /api/validate beginnt Ausgabe von Griffen: - app/lib/sessionHandle.ts: die Sitzung eines Tabs HANDLE ist die 128-Hex-ID mit AES-256-GCM unter versiegelt ein Schlüssel abgeleitet (HKDF) von SESSION_HANDLE_SECRET und eine zufällige pro-Browser-Taste in einem HttpOnly __Host-KBK Cookie. Genau 128 Zeichen, so dass jeder vorhandene Client-Check akzeptiert es; nutzlos in jeder andere Browser; Manipulationen verfehlen das tag. sessionHandle.test.ts deckt seal/open, fremd Browser, Manipulation, kein Geheimnis. - Proxy.ts öffnet einen Griff, der in X-***-Token in die reale ID für die Route ankommt, also die 180 € Routen, die lesen, dass Header brauchen keine Änderung; ein Griff, der nicht geöffnet fällt sowohl die Kopfzeile und das geteilte *** Cookie, anstatt die Route auf die Sitzung eines anderen Tabs zurückgreifen zu lassen. Die Der Matcher enthält /api/:path* explizit (die statische Dateiregel übersprungen /api/*.png). - /api/generate-otk gewinnt Zweck=ws (30 s) für WebSocket Handshakes; Logout behält den Browser-Schlüssel (Die Griffe anderer Tabs hängen davon ab). - k8s/deployment.yaml montiert den kamo-internal-session-griff Secret (erzeugt im Cluster).
