Das Bearer-Token liegt aktuell in sessionStorage (index.html:808,1092). Bei einer XSS-Luecke ist es per JS lesbar.
Das DOM-XSS aus #15 ist behoben - aber als Defense-in-Depth sollte das Token in einem HttpOnly+Secure+SameSite=Strict-Cookie liegen.
Aufwand
Groesserer Umbau:
/login setzt Cookie via Set-Cookie-Header
Middleware liest Token aus Cookie statt aus Authorization-Header (oder beide unterstuetzt)
Frontend apiFetch muss credentials: "include" setzen
CORS-Konfig braucht allow_credentials=True und konkrete Origins (kein *)
Logout-Route zum Cookie loeschen
sessionStorage-Code entfernen
Ausgliederung
Ausgegliedert aus #17 (Audit), weil dort CORS-Hardening und Security-Header eigenstaendig erledigt wurden.
## Problem
Das Bearer-Token liegt aktuell in `sessionStorage` (`index.html:808,1092`). Bei einer XSS-Luecke ist es per JS lesbar.
Das DOM-XSS aus #15 ist behoben - aber als Defense-in-Depth sollte das Token in einem HttpOnly+Secure+SameSite=Strict-Cookie liegen.
## Aufwand
Groesserer Umbau:
- `/login` setzt Cookie via `Set-Cookie`-Header
- Middleware liest Token aus Cookie statt aus `Authorization`-Header (oder beide unterstuetzt)
- Frontend `apiFetch` muss `credentials: "include"` setzen
- CORS-Konfig braucht `allow_credentials=True` und konkrete Origins (kein `*`)
- Logout-Route zum Cookie loeschen
- sessionStorage-Code entfernen
## Ausgliederung
Ausgegliedert aus #17 (Audit), weil dort CORS-Hardening und Security-Header eigenstaendig erledigt wurden.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Problem
Das Bearer-Token liegt aktuell in
sessionStorage(index.html:808,1092). Bei einer XSS-Luecke ist es per JS lesbar.Das DOM-XSS aus #15 ist behoben - aber als Defense-in-Depth sollte das Token in einem HttpOnly+Secure+SameSite=Strict-Cookie liegen.
Aufwand
Groesserer Umbau:
/loginsetzt Cookie viaSet-Cookie-HeaderAuthorization-Header (oder beide unterstuetzt)apiFetchmusscredentials: "include"setzenallow_credentials=Trueund konkrete Origins (kein*)Ausgliederung
Ausgegliedert aus #17 (Audit), weil dort CORS-Hardening und Security-Header eigenstaendig erledigt wurden.