Pentest 42.5 MEDIUM: priceFirst12Months/priceFrom13Months/priceAfter24Months in Display-Strip aufnehmen
Die drei Preisfelder sind im Schema String? (freitextlich für
Angaben wie "0,28 €/kWh"). sanitizeContract strippte sie auf
dem Read-Pfad nicht – damit lieferten Alt-Daten mit XSS-Payloads
("<script>alert(1)</script>") sie 1:1 an die UI aus.
Defense-in-Depth: Write-Pfad hat sanitizeContractBody, das alle
String-Felder rekursiv stripped. Diese Read-Time-Variante
schützt zusätzlich vor Alt-Daten und einem kompromittierten
Admin-Account.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -74,6 +74,14 @@ const CONTRACT_DISPLAY_STRING_FIELDS = [
|
||||
'previousCustomerNumber',
|
||||
'previousContractNumber',
|
||||
'notes',
|
||||
// Preisfelder sind im Schema `String?` (freitextlich, nicht numerisch),
|
||||
// damit Tarifangaben wie "0,28 €/kWh" oder "27,90 € + 10 € Bonus"
|
||||
// möglich sind. Pentest 2026-05-30 (MEDIUM, 42.5): rohe HTML-Payloads
|
||||
// in den drei Feldern überlebten den Write-Strip nicht und kommen
|
||||
// beim Read 1:1 wieder raus.
|
||||
'priceFirst12Months',
|
||||
'priceFrom13Months',
|
||||
'priceAfter24Months',
|
||||
] as const;
|
||||
|
||||
// User-eingabe String-Felder am Customer für dieselbe Read-Time-Defensive.
|
||||
|
||||
Reference in New Issue
Block a user