Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,26 @@ Changelog ist die Upgrade-Anleitung für die Tools.

## [Unreleased]

### Template

**App-spezifische Cookie-Namen für Session und CSRF** (#22): Browser trennen
Cookies pro Host, nicht pro Port. Tools, die parallel auf demselben Host laufen
(in der Entwicklung mehrere „-bar“-Tools auf `localhost`), überschrieben sich
gegenseitig `sessionid`/`csrftoken` – man war in den anderen Tools abgemeldet
(`403 "Anmeldedaten fehlen."`) und POSTs scheiterten an CSRF. Das Template
setzt jetzt `SESSION_COOKIE_NAME = "<project_slug>_sessionid"` und
`CSRF_COOKIE_NAME = "<project_slug>_csrftoken"`. `basicbar-auth`
(Silent Login, Back-Channel-Logout, `whoami` mit CSRF-Token) und
`basicbar-lti` setzen keine festen Cookie-Namen voraus; das Template-Frontend
liest den CSRF-Token aus `whoami`, nicht aus dem Cookie.

Migration (bestehende Tools): in `backend/config/settings.py` die zwei Zeilen
ergänzen (Slug des Tools einsetzen). Wer das CSRF-Cookie im Frontend selbst
per Namen liest (z. B. `getCookie("csrftoken")`), stellt auf den neuen Namen
oder auf den Token aus `whoami` um. Beim Deploy werden alle Nutzenden einmal
abgemeldet (per Silent-SSO meist sofort wieder angemeldet). Bereits
übernommen: ausleihbar (virtUOS/ausleihbar#105), kalkulierbar.

### @basicbar/ui (→ wird `ui/v0.7.2`)

**Sicherheits-Fix `stripHtml` / `isEmptyHtml`** (#20): Beide parsten über
Expand Down
6 changes: 6 additions & 0 deletions template/project/backend/config/settings.py.jinja
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,12 @@ STATIC_ROOT = BASE_DIR / "staticfiles"
MEDIA_URL = "media/"
MEDIA_ROOT = BASE_DIR / "media"

# App-specific cookie names: browsers share cookies per host regardless of
# port, so other tools on the same host (e.g. several -bar tools on localhost
# in development) would overwrite "sessionid"/"csrftoken" and log each other out.
SESSION_COOKIE_NAME = "{{ project_slug }}_sessionid"
CSRF_COOKIE_NAME = "{{ project_slug }}_csrftoken"

# Behind a TLS-terminating reverse proxy in production: trust its forwarded
# host/scheme so absolute URLs use https, and require secure cookies.
if not DEBUG:
Expand Down
Loading