docs: BREACH-/-Marker konkret entfernen – exact-match-Location erklärt
Folge zur User-Frage: Snippet auch für / anwenden. Wichtiger Punkt dokumentiert: NPM-Custom-Location mit prefix-`/` würde ALLE Pfade außer /api/* fangen (auch /assets/*.js) → JS-Bundle unkomprimiert ~500 KB statt 150 KB. Stattdessen exact-match `location = /` nutzen, das fängt nur die Root-URL ohne weitere Pfad-Komponente. Zwei Varianten dokumentiert: - Variante A: Custom Location im NPM-UI mit „= /" (falls Feld das akzeptiert) - Variante B: server-level snippet im Advanced-Tab des Proxy-Hosts Plus Verifikations-Befehle für „/" ohne gzip + „/assets/*.js" weiter mit gzip. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -294,8 +294,8 @@ curl -sI https://kundencenter.deine-domain.de/api/health \
|
||||
|
||||
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:
|
||||
ausgeliefert wird (Performance: 50 KB → ~10 KB). Bei OpenCRM ist der
|
||||
Angriff dort nicht ausnutzbar:
|
||||
|
||||
- Die `/`-Response ist die statische `index.html` aus dem Vite-Build
|
||||
- Sie reflektiert **keinen user-controlled Input**
|
||||
@@ -303,9 +303,63 @@ akzeptiert**, weil der Angriff dort nicht ausnutzbar ist:
|
||||
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.
|
||||
|
||||
##### Wer den Audit-Marker trotzdem weg haben will
|
||||
|
||||
Wichtig: nicht einfach eine Custom-Location für `/` mit `gzip off`
|
||||
anlegen – das wäre ein **prefix-Match** und würde **alle** Pfade
|
||||
außer `/api/*` betreffen, also auch `/assets/*.{js,css}`. Das JS-Bundle
|
||||
käme dann unkomprimiert (~500 KB statt ~150 KB) → spürbarer
|
||||
Performance-Verlust für nichts.
|
||||
|
||||
Sauber ist eine **exact-Match-Location** (`location = /`) – die fängt
|
||||
nur die Root-URL ohne weitere Pfad-Komponente:
|
||||
|
||||
**Variante A** – Custom Location im NPM-UI (falls `= /` im
|
||||
„Define location"-Feld akzeptiert wird):
|
||||
|
||||
| Feld | Wert |
|
||||
|---|---|
|
||||
| Define location | `= /` |
|
||||
| Scheme | `http` |
|
||||
| Forward Hostname/IP | wie im Haupt-Host |
|
||||
| Forward Port | `3010` |
|
||||
|
||||
Im Zahnrad-Edit der Location:
|
||||
```nginx
|
||||
gzip off;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
# Information-Disclosure-Header weg (Pentest-Hygiene):
|
||||
more_clear_headers Server X-Served-By;
|
||||
```
|
||||
|
||||
**Variante B** – wenn das NPM-UI das `=` nicht akzeptiert, dieselbe
|
||||
Logik im **Advanced**-Tab des Proxy-Hosts:
|
||||
```nginx
|
||||
location = / {
|
||||
gzip off;
|
||||
proxy_pass $forward_scheme://$server:$port;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
more_clear_headers Server X-Served-By;
|
||||
}
|
||||
```
|
||||
|
||||
Verifikation – `/` ohne gzip, `/assets/*` aber weiter mit:
|
||||
```bash
|
||||
# Root: kein Content-Encoding mehr
|
||||
curl -sI -H 'Accept-Encoding: gzip' https://kundencenter.deine-domain.de/ \
|
||||
| grep -i content-encoding
|
||||
|
||||
# /assets/<file>.js: weiterhin gzip (Performance bleibt erhalten)
|
||||
JS=$(curl -s https://kundencenter.deine-domain.de/ | grep -oE 'assets/index-[A-Za-z0-9_-]+\.js' | head -1)
|
||||
curl -sI -H 'Accept-Encoding: gzip' "https://kundencenter.deine-domain.de/$JS" \
|
||||
| grep -i content-encoding
|
||||
```
|
||||
|
||||
Kostet 40 KB extra pro Tab-Reload – aber dafür ist auch der letzte
|
||||
BREACH-Marker weg und Pentest-Reports landen auf 0×MEDIUM.
|
||||
|
||||
## Developer-Tools aktivieren
|
||||
|
||||
|
||||
Reference in New Issue
Block a user