Pentest 71.1-71.4: Härtung der Zusatz-Weiterleitungen

71.1 MEDIUM: BLOCKED_TLDS-Set in assertValidForwardingEmail –
reservierte/private TLDs (local, internal, corp, lan, home,
private, invalid, test, localhost, example, intranet, localdomain,
arpa) werden abgelehnt. Schließt Plesk-DNS-Probing ins interne Netz.

71.2 LOW: canonicalEmailKey-Helper normalisiert Mail-Adressen für
den Dedup (Plus-Tag wegstrippen, lowercase). billing+x@y und
billing@y haben jetzt denselben Schlüssel – auch gegen Kunden-
Stamm-Mail und gegen config.defaultForwardEmail im sync-Pfad.

71.3 INFO: Neuer requireIdParam-Helper im Controller liefert 400
statt 500 bei nicht-numerischen Route-IDs. Alle acht parseInt-
Stellen umgestellt (auch über die gemeldete eine hinaus).

71.4 INFO: setAdditionalForwards rollt den DB-Stand zurück, wenn
syncForwardingForEmail mit dem Provider scheitert. Vorheriger Wert
wird vorm Update gemerkt und im Fehlerfall wieder eingespielt –
DB und Plesk laufen nicht mehr auseinander.

Smoke-Tests: 11 reservierte TLDs abgelehnt, 4 echte TLDs (de, com,
co.uk, museum) durchgewinkt, Plus-Tag-Strip mit Multi-Plus+Casing.
This commit is contained in:
2026-06-18 13:41:16 +02:00
parent 96a054aa1a
commit 246999be01
3 changed files with 141 additions and 15 deletions
+23
View File
@@ -97,6 +97,29 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung
## ✅ Erledigt
- [x] **🔒 Pentest 71.171.4: Härtung der Zusatz-Weiterleitungen**
- **71.1 MEDIUM:** Reservierte/private TLDs (`local`, `internal`,
`corp`, `lan`, `home`, `private`, `invalid`, `test`, `localhost`,
`example`, `intranet`, `localdomain`, `arpa`) werden in
`assertValidForwardingEmail` jetzt hart abgelehnt. Verhindert
Plesk-DNS-Probing ins interne Netz bei On-Prem-Setups.
- **71.2 LOW:** Neuer Helper `canonicalEmailKey` normalisiert Mail-
Adressen für den Dedup-Vergleich (Plus-Tag wegstrippen,
lowercase). `billing+pentest@x.de` und `billing@x.de` werden als
dasselbe Ziel erkannt auch im Vergleich zur Kunden-Stamm-Mail
und im sync-Pfad gegen `config.defaultForwardEmail`.
- **71.3 INFO:** Neuer `requireIdParam(req, res, paramName)`-Helper
fängt nicht-numerische Route-Parameter und liefert 400 statt 500.
Alle acht parseInt-Stellen in `stressfreiEmail.controller.ts`
umgestellt (auch über das gemeldete Finding hinaus).
- **71.4 INFO:** `setAdditionalForwards` rollt den DB-Stand bei
Provider-Sync-Fehler zurück, damit DB und Plesk nicht
auseinanderlaufen. Vorheriger `additionalForwardingEmails`-Wert
wird vor dem Update gemerkt und bei Fail wieder eingespielt.
- Smoke-Tests bestätigen: 11 reservierte TLDs abgelehnt, 4 echte
TLDs (`de`, `com`, `co.uk`, `museum`) durchgewinkt, Plus-Tag-
Strip funktioniert (auch mit Multi-Plus + Casing).
- [x] **🆕 Stressfrei-Adressen: Zusatz-Weiterleitungen auch beim Anlegen**
- Im „Adresse hinzufügen"-Modal erscheint der „Weitere
Weiterleitungen"-Button jetzt auch, sobald „Beim E-Mail-Provider