Pentest R87: Identifier-Whitelist vor stripHtml ziehen
R87.1 LOW: stripHtml lief im R86-Fix VOR der Whitelist. `<b>bold</b>` ging als `"bold"` mit 200 OK durch, `<script>…</script>` reduzierte auf leeren String → null in DB → vorheriger Wert ohne Fehlermeldung überschrieben. Fix: validateContractIdentifier läuft jetzt direkt gegen den Raw-Input für die fünf Identifier-Felder. Die strikte Whitelist lehnt eh alles ab, was stripHtml normalerweise auffangen würde (Tags, Schemes, Zero-Width, Homoglyphe, Percent-Encoding) – Defense-in-Depth bleibt, nur ehrlich (400 statt silent-200). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -97,6 +97,20 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung
|
||||
|
||||
## ✅ Erledigt
|
||||
|
||||
- [x] **🔒 Pentest R87 – Whitelist vor Sanitizer (silent-mutation-Schutz)**
|
||||
- R87.1 (LOW): `stripHtml` lief im R86-Fix VOR der Whitelist.
|
||||
Tags wurden still weggestrippt → 200 OK mit mutierten Werten,
|
||||
`<script>…</script>` reduzierte auf leeren String → `null` in
|
||||
der DB → vorheriger Wert ohne Fehlermeldung überschrieben.
|
||||
- Fix: Validierungs-Reihenfolge für die fünf Identifier-Felder
|
||||
umgedreht – `validateContractIdentifier` läuft jetzt direkt
|
||||
gegen den Raw-Input. Die strikte Whitelist lehnt eh alles
|
||||
ab, was stripHtml normalerweise auffangen würde (Tags,
|
||||
Schemes, Zero-Width, Homoglyphe, Percent-Encoding) – Defense-
|
||||
in-Depth bleibt, nur ehrlich (400 statt silent-200).
|
||||
- Single-Line-Patch in `contract.controller.ts`, Doku in
|
||||
`SECURITY-HARDENING.md § Runde 87`.
|
||||
|
||||
- [x] **🔒 Pentest R86 – Vertrags-Identifier härten**
|
||||
- R86.1 (LOW): >999-Zeichen-Strings auf Kunden-/Vertrags-/
|
||||
Auftragsnummer warfen 500 (DB-Overflow `VARCHAR(191)`) statt 400.
|
||||
|
||||
Reference in New Issue
Block a user