Einschränkung der Werte der Callback-URL - Input Validation [M]
Release-Version: Zustelldienst 1.8.3
Warum?
Die Callback-URL darf aus Sicherheitsgründen keine IP-Adresse, nicht 'localhost' und keine von Port 443 abweichenden Ports enthalten.
Die Einschränkung auf Port 443 verhindert, dass der Zustelldienst Traffic in Richtung alternativer Ports sendet und damit den reibungslosen Betrieb von Drittsystemen stört. In einer Produktivumgebung sollte niemand https auf einem Nicht-Standard-Port betreiben.
Der Ausschluss von IP-Adressen und
localhost
verhindert, dass über die Callback-Adresse indirekt Requests an interne Systeme beim Betreiber eines Zustelldienstes gesendet werden können. Im Worst-Case (konstruiertes Beispiel) haben wir irgendwo eine Firewall, einen Router oder Switch stehen, der durch Request aufPOST https://10.0.0.42/reset_config
in die Werkseinstellungen versetzt wird.
Relevante Links und Bemerkungen
- Bei Verwendung der Callback-URL 'https://localhost/callback' in der Destination-Konfiguration tritt beim Einreichen von Submissions aktuell folgender Fehler auf
{"title":"Internal Server Error","status":500,"detail":"I/O error on POST request for \"https://localhost/callback\": Connection refused (Connection refused); nested exception is java.net.ConnectException: Connection refused (Connection refused)"}
- RFC5735
Akzeptanzkriterien
-
Die Prüfungen erfolgen beim Anlegen eines Callbacks (create-destination, update-destination, create-submission, update-submission). -
Callback-URLs dürfen keine IP-Adresse enthalten. -
Callback-URLs dürfen nicht 'localhost' enthalten. -
Callback-URLs dürfen keinen Port enthalten (nur der Standardport 443 darf verwendet werden). -
Callback-URLs müssen mit https://
beginnen. -
Das SSP bzw. die API geben aussagekräftige Fehlermeldungen aus. -
Die Einschränkungen müssen in der Entwicklungsumgebung abschaltbar sein, z.B. durch exclude: ['http://localhost/*']
oder Liste an RegEx -
(Optional) Exlucde-Liste kann evtl. Sinn machen (siehe Kommentar)-> Folgeissue
Durchführungsplan
-
... -
... -
...