From c5dc271759281aba886e31b5900e8c20399aee88 Mon Sep 17 00:00:00 2001 From: duffyduck Date: Sat, 16 May 2026 16:59:49 +0200 Subject: [PATCH] docs: BREACH-Marker auf SPA-Root / als bewusst akzeptiert dokumentieren MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pentest-Tools (testssl) melden BREACH weiter für die Root-URL, weil die SPA-index.html bewusst weiter gzip-komprimiert ausgeliefert wird (Performance: 50 KB → ~10 KB). Das ist nicht ausnutzbar, weil keine Secrets/Reflektionen im HTML-Body sind. README erklärt jetzt explizit warum + wie man es trotzdem loswerden kann (zusätzliche NPM-Custom- Location für /, Trade-off: 40 KB extra pro Tab-Reload). Co-Authored-By: Claude Opus 4.7 (1M context) --- README.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/README.md b/README.md index 55d909fd..887bfcd1 100644 --- a/README.md +++ b/README.md @@ -290,6 +290,23 @@ curl -sI https://kundencenter.deine-domain.de/api/health \ | grep -iE '^(server|x-served-by):' ``` +#### Was mit gzip auf `/` (SPA-HTML) ist + +Pentest-Tools wie `testssl` melden BREACH **trotzdem weiter** für die +Root-URL `/`, weil die SPA-`index.html` bewusst weiter gzip-komprimiert +ausgeliefert wird (Performance: 50 KB → ~10 KB). Das ist **bewusst +akzeptiert**, weil der Angriff dort nicht ausnutzbar ist: + +- Die `/`-Response ist die statische `index.html` aus dem Vite-Build +- Sie reflektiert **keinen user-controlled Input** +- Sie enthält **keine Secrets** (JWT-Access ist im `Authorization`-Header, + Refresh-Token im httpOnly-Cookie – beides nicht im HTML-Body) + +Ohne Secret-im-Body und ohne Input-Reflektion hat BREACH keinen Hebel. +Wer den Audit-Marker trotzdem loswerden will, fügt eine weitere +NPM-Custom-Location für `/` mit `gzip off;` hinzu – kostet aber 40 KB +extra pro Tab-Reload. + ## Developer-Tools aktivieren Die Developer-Tools (Datenbankstruktur, ER-Diagramm) sind standardmäßig für Admins verfügbar. Falls der Menüpunkt nicht erscheint: