Vertrag kopieren: Legacy-phoneNumber/simCardNumber auch leeren (R135/136)

Pentester-Fund: die Legacy-Scalar-Felder mobileDetails.phoneNumber und
simCardNumber (kein sichtbares Formularfeld mehr) wurden beim Kopieren
noch uebernommen - anders als die SIM-Karten-Liste und anders als
'Rufnummern werden nicht uebernommen'. Zwei getrennte Vertraege
desselben Kunden haetten so unbemerkt dieselbe Rufnummer getragen.

Datenintegritaet, kein Security-Loch. Beide Felder jetzt im Kopier-
Leer-Block.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-03 13:26:42 +02:00
co-authored by Claude Opus 4.8
parent 2aee1f1114
commit 3bbe262039
2 changed files with 11 additions and 1 deletions
+4 -1
View File
@@ -108,7 +108,10 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung
Vorgänger-Link, alle Datumsfelder (Start/Ende/Installation/Kündigungs-
bestätigung), Kunden-/Vertragsnummer beim Anbieter + Plattform-Nummern.
**Nicht** übernommen: SIM-Karten & Rufnummern (hardware-/vertrags-
spezifisch, eindeutige Nummern). **Behalten** wird der Portal-Zugang
spezifisch, eindeutige Nummern) inkl. der Legacy-Scalar-Felder
`phoneNumber`/`simCardNumber` (Pentest R135/136: die wurden zunächst
noch kopiert → zwei getrennte Verträge hätten dieselbe Rufnummer tragen
können; jetzt im Leer-Block). **Behalten** wird der Portal-Zugang
(Benutzername + Stressfrei-Verknüpfung/„nicht benötigt") bei gleichem
Anbieter oft identisch; nur das verschlüsselte Passwort wird nicht ins
Feld geladen (wie beim Bearbeiten). Rest (Anbieter/Tarif, Preise, alle
@@ -417,6 +417,13 @@ export default function ContractForm() {
cancellationConfirmationDate: '',
cancellationConfirmationOptionsDate: '',
wasSpecialCancellation: false,
// Legacy-Mobilfunk-Felder (kein sichtbares Formularfeld mehr, aber
// im Reset gesetzt): eindeutige Rufnummer/SIM-Nummer ebenfalls
// leeren, sonst trügen zwei getrennte Verträge desselben Kunden
// unbemerkt dieselbe Rufnummer (Pentest R135/136). Die SIM-Karten-
// Liste wird ohnehin schon nicht übernommen.
phoneNumber: '',
simCardNumber: '',
// Eindeutige Kunden-/Vertragsnummern beim Anbieter & Plattform
customerNumberAtProvider: '',
contractNumberAtProvider: '',