SEPA-Lastschrift: Datenschutz und Sicherheit
Welche Daten die SEPA-Lastschrift speichert, wie die IBAN verschlüsselt wird, wer das Mandats-PDF abrufen kann, was beim Löschen passiert und welche SEPA-Pflichten das Plugin nicht übernimmt.
SEPA-Lastschrift: Datenschutz und Sicherheit
Live Demo: Teste dieses und weitere Plugins live — ohne Installation, ohne Risiko: demo.markus-michalski.net
Diese Seite beschreibt, was das Plugin technisch tut. Sie ist keine Rechtsberatung. Aufbewahrungsfristen, Auskunfts- und Löschpflichten bewertest du für deinen Shop selbst.
Gespeicherte Daten
Das Plugin speichert pro Mandat einen Datensatz in der Tabelle mmd_sepa_mandate:
| Feld | Inhalt | Gespeichert als |
|---|---|---|
| Kunde | UUID des Kunden | Klartext |
| Mandatsreferenz | Eindeutige Referenz | Klartext |
| IBAN | Bankverbindung des Kunden | verschlüsselt |
| BIC | Optional, wie eingegeben | Klartext |
| Kontoinhaber | Name wie eingegeben | Klartext |
| Status | active, revoked oder expired |
Klartext |
| Zeitpunkte | Unterzeichnung, Widerruf, Anlage, Änderung | Klartext |
Weitere Daten, etwa Zahlungs- oder Bonitätsinformationen, speichert das Plugin nicht. Es sendet auch keine Daten an externe Dienste: Der Code enthält keine ausgehenden Anfragen, und das PDF wird lokal erzeugt, mit deaktiviertem Nachladen entfernter Ressourcen.
Verschlüsselung der IBAN
- Verfahren: AES-256-GCM mit zufälligem Initialisierungsvektor pro Verschlüsselung. Manipulierte Daten werden beim Entschlüsseln erkannt und abgelehnt.
- Schlüssel: Er wird per HKDF-SHA256 aus dem
APP_SECRETdeiner Shopware-Installation abgeleitet. Das Plugin speichert keinen eigenen Schlüssel. - Zeitpunkt: Die IBAN wird schon zwischen der Prüfung im Checkout und dem Anlegen des Mandats verschlüsselt weitergegeben und nie im Klartext in der Datenbank abgelegt.
- Entschlüsselung: Nur wenn sie gebraucht wird, nämlich für das Mandats-PDF und für die maskierte Anzeige (
DE89****3000).
Ändert sich der
APP_SECRET, lassen sich bereits gespeicherte IBANs nicht mehr entschlüsseln. Mandats-PDFs und die maskierte IBAN im Checkout und im Kundenkonto laufen dann auf einen Fehler. Es gibt keine Funktion zum Umschlüsseln. Sichere deshalb denAPP_SECRETund setze ihn bei einem Umzug unverändert. Siehe auch Fehlerbehebung.
Wo die vollständige IBAN sichtbar ist
- Mandats-PDF: Es enthält die vollständige IBAN. Es kann herunterladen, wer der eingeloggte Besitzer ist oder den
deepLinkCodeder Bestellung kennt. Die Antwort wird mitCache-Control: no-storeausgeliefert. - Admin: Hier siehst du die IBAN nicht. Nur das PDF aus dem Admin enthält sie, abrufbar für Administratoren.
- Storefront und Checkout: Es wird nur die maskierte IBAN angezeigt.
- Entwickler-API:
getDecryptedIban()liefert die IBAN an Code, der den Service aufruft, siehe Entwickler-API.
Zugriffsschutz und Missbrauchsschutz
- Kundenkonto-Routen verlangen einen Login, Formulare tragen ein CSRF-Token.
- Der PDF-Abruf über eine Bestellung prüft Besitzer oder
deepLinkCode(zeitkonstanter Vergleich). Fehlversuche werden mit Bestell-ID, Kunde und IP-Adresse geloggt. - Die Route
validate-ibanist auf 10 Anfragen pro Minute und IP begrenzt. Dabei wird ein Hash der IP-Adresse im Cache abgelegt. - Beim Anlegen eines Mandats wird ein Logeintrag mit Mandats-ID, Kunden-ID und Mandatsreferenz geschrieben, beim Widerruf mit der Mandats-ID. Die IBAN steht nicht im Log.
Löschen und Aufbewahren
- Widerruf: Ein widerrufenes Mandat bleibt als Datensatz mit Status
revokedund Widerrufszeitpunkt bestehen. Das Plugin löscht es nicht. - Keine Fristenlogik: Das Plugin kennt keine Aufbewahrungsfrist und löscht oder anonymisiert nichts automatisch.
- Keine Änderungshistorie: Es gibt keine eigene Verlaufstabelle. Es existiert pro Mandat nur der aktuelle Stand mit Unterzeichnungs- und Widerrufszeitpunkt.
- Kunde gelöscht: Löschst du einen Kunden in Shopware, werden seine Mandate mit ihm gelöscht (Fremdschlüssel mit
ON DELETE CASCADE). - Plugin deinstalliert: Ohne Erhalt der Benutzerdaten wird die Tabelle komplett gelöscht, siehe Installation.
Was das Plugin für SEPA nicht übernimmt
| Thema | Stand |
|---|---|
| Einzug der Lastschrift | Nicht enthalten. Es gibt keinen Export einer SEPA-Datei (pain.008) und keine Bankanbindung. |
| Vorabankündigung (Pre-Notification) | Nicht enthalten. Das Plugin versendet keine E-Mails an Kunden. |
| Ablauf von Mandaten | Nicht enthalten. Das Plugin überwacht keine Nutzungsfristen und setzt den Status expired nie. |
| Rücklastschriften | Nicht enthalten. Das Plugin kennt keine Rücklastschriften und ändert den Zahlungsstatus der Bestellung nicht. |
| Mandatsart (Erst- oder Folgelastschrift) | Nicht enthalten. Das PDF nennt allgemein "Einmalige Zahlung / Wiederkehrende Zahlungen". |
Was das Plugin liefert: eine eindeutige Mandatsreferenz (in der Datenbank über alle Mandate hinweg einmalig), die Erfassung der Zustimmung mit Zeitpunkt, die Prüfung von IBAN, BIC und Kontoinhaber, den konfigurierbaren Mandatstext, ein Mandats-PDF und den Widerruf mit Zeitstempel.