WooCommerce absichern: Zahlungsdaten, Kundenkonten und Admin-Zugriffe schützen
WooCommerce-Shop absichern: Kartendaten beim Zahlungsanbieter halten, Kundenkonten sparsam anlegen, Rolle Shop-Manager statt Administrator, REST-API-Schlüssel aufräumen, Downloads und Protokolle sperren, Anfragebegrenzung an der Kasse.
Mit KI erstellt – redaktionelle Prüfung ausstehend
WerbelinksMit * markierte Links sind Werbelinks: Bei einem Kauf erhalten wir eine Provision, der Preis bleibt gleich. Mehr dazu

Ein Onlineshop ist für Angreifer attraktiver als eine reine Firmenwebsite: Dort liegen Kundenkonten mit Adressen, Bestellhistorien, Zugänge zu Zahlungsanbietern und oft Schnittstellen zu Warenwirtschaft oder Buchhaltung. WooCommerce bringt dafür einige Schutzmechanismen mit, viele davon sind aber Einstellungssache. Diese Anleitung geht die Stellen durch, an denen kleine Shops in der Praxis angreifbar sind: Zahlungsarten und der Umgang mit Kartendaten, Kundenkonten, die Rolle Shop-Manager, REST-API-Schlüssel, geschützte Downloads und Protokolle. Sie richtet sich an Shopbetreiber, die WooCommerce selbst verwalten und nicht jede Einstellung einzeln nachschlagen möchten.
Voraussetzungen
- WordPress und WooCommerce: eine aktuelle Version. Die Anleitung nutzt WordPress 7.1.2 und WooCommerce 11.1.2; WooCommerce setzt laut Plugin-Seite mindestens WordPress 7.0 und PHP 7.4 voraus.
- Rolle: Administrator im WordPress-Backend.
- HTTPS: Der ganze Shop läuft bereits über ein gültiges Zertifikat. Falls nicht, zuerst WordPress auf HTTPS umstellen.
- Zugriff: Für die Prüfung der Protokoll- und Download-Verzeichnisse SFTP oder SSH, für den Test mit
curlein Terminal. - Backup: eine aktuelle Sicherung von Dateien und Datenbank einschließlich der Bestellungen, bevor Sie Rollen, Einstellungen oder Schlüssel ändern.
Schritt 1: Zahlungsdaten aus dem eigenen Server heraushalten
Der wirksamste Schutz für Kartendaten ist, sie gar nicht erst auf den eigenen Server zu lassen. WooCommerce selbst verarbeitet laut eigener Dokumentation keine Kartendaten und ist nicht PCI-zertifiziert. Das übernimmt das Zahlungs-Plugin. Anbieter wie Stripe, PayPal oder WooPayments leiten Kunden auf eigene Seiten weiter oder betten Eingabefelder ein, die direkt vom Zahlungsanbieter kommen. Ihr Shop bekommt dann nur ein Token und den Zahlungsstatus zurück.
Ganz aus der Verantwortung sind Sie damit nicht. Sobald Ihr Shop die Kassenseite ausliefert, fällt er in den Geltungsbereich des Kartenstandards PCI DSS, allerdings mit deutlich kleinerem Umfang. Ihr Zahlungsanbieter kann einen Selbstauskunftsbogen verlangen. Praktisch heißt das:
- Installieren Sie Zahlungs-Plugins nur von der Plugin-Seite auf wordpress.org oder direkt vom Zahlungsanbieter, nie aus Downloadportalen.
- Deaktivieren und löschen Sie Zahlungsarten, die Sie nicht mehr anbieten. Ein inaktives, veraltetes Zahlungs-Plugin ist Angriffsfläche ohne Nutzen.
- Die API-Schlüssel der Zahlungsanbieter gehören in die Einstellungen des Plugins, nicht in Seiten, Beiträge oder Mails an Kollegen. Nutzen Sie im Livebetrieb die Live-Schlüssel und entfernen Sie Testschlüssel nach dem Start.
- Lassen Sie im Konto des Zahlungsanbieters selbst die Zwei-Faktor-Anmeldung einschalten. Dort lassen sich Auszahlungskonten ändern, das ist das eigentliche Ziel vieler Angriffe.
Verifizieren: Unter WooCommerce > Einstellungen > Zahlungen sind nur die Zahlungsarten aktiv, die Sie wirklich anbieten. Bei einer Testbestellung geben Sie die Kartendaten in Feldern ein, die vom Zahlungsanbieter stammen, oder werden auf dessen Seite weitergeleitet.
Schritt 2: Kundenkonten sparsam und sicher anlegen
Jedes Kundenkonto ist ein Login, das geschützt werden muss. Unter WooCommerce > Einstellungen > Konten und Datenschutz steuern Sie, wann Konten entstehen. In einer frischen Installation ist „Bezahlen als Gast“ aktiv, die Kontoerstellung an der Kasse und auf der Seite „Mein Konto“ ist aus. Für viele kleine Shops ist das eine gute Grundlage: Wer nur einmal bestellt, braucht kein Konto.
Wenn Sie Konten anbieten, lassen Sie die Option Link zur Einrichtung des Passworts senden aktiv. Dann wählt der Kunde sein Passwort selbst über einen Link, und WooCommerce verschickt kein Passwort im Klartext per E-Mail. Die Option „Nach dem Bezahlen“ bietet Kunden erst nach dem Kauf ein Konto an und hält den Bezahlvorgang kurz.
Im selben Bereich legen Sie unter „Aufbewahrung personenbezogener Daten“ fest, wann inaktive Konten gelöscht und alte Bestellungen anonymisiert werden. Die Felder sind anfangs leer, dann bleibt alles unbegrenzt gespeichert. Stimmen Sie die Fristen mit Ihrer Buchhaltung ab, denn Bestellungen können steuerlichen Aufbewahrungspflichten unterliegen.
Verifizieren: Rufen Sie die Seite „Mein Konto“ abgemeldet in einem privaten Browserfenster auf. Ist die Registrierung dort aus, sehen Sie nur das Anmeldeformular. Legen Sie ein Testkonto an und prüfen Sie, dass die Mail einen Link zur Passwortvergabe enthält und kein Passwort.
Schritt 3: Backend-Zugänge nach Aufgabe vergeben
WooCommerce legt die Rollen Shop-Manager und Kunde an. Der Shop-Manager kann Bestellungen, Produkte, Berichte und Shop-Einstellungen verwalten, aber keine Plugins installieren oder aktivieren, keine allgemeinen WordPress-Einstellungen ändern und keine Benutzer anlegen oder deren Rolle ändern. Kundenkonten darf er bearbeiten, Administratorkonten nicht. Für Mitarbeiter im Kundenservice und in der Auftragsabwicklung ist das die passende Rolle, nicht Administrator.
Zwei Punkte sollten Sie dabei kennen. Erstens darf der Shop-Manager das Design bearbeiten, etwa über den Website-Editor, und Daten exportieren. Wer nur Bestellungen bearbeitet, braucht beides eigentlich nicht; für feinere Abstufungen ist ein Rollen-Plugin nötig. Zweitens hält WooCommerce Kunden vom Backend fern: Wer weder Beiträge bearbeiten noch WooCommerce verwalten darf, wird beim Aufruf von /wp-admin/ auf „Mein Konto“ umgeleitet.
Alle Konten mit Backend-Zugriff sollten eine Zwei-Faktor-Anmeldung nutzen. Das Vorgehen beschreibt Zwei-Faktor-Authentifizierung für den WordPress-Login einrichten. Scheidet jemand aus, entziehen Sie Rolle und Sitzungen noch am selben Tag, siehe Benutzer bei Mitarbeiterwechsel anpassen.
wp user list --role=administrator --fields=ID,user_login,user_email
wp user list --role=shop_manager --fields=ID,user_login,user_email
Verifizieren: Die beiden Listen enthalten nur Personen, die heute noch für den Shop arbeiten. Melden Sie sich testweise als Shop-Manager an: Unter Plugins fehlt „Installieren“, und die Rolle eines Administrators lässt sich nicht ändern.
Schritt 4: REST-API-Schlüssel und Webhooks prüfen
Warenwirtschaft, Versandtools und Marktplatz-Anbindungen greifen über API-Schlüssel auf den Shop zu. Jeder Schlüssel gehört zu einem WordPress-Benutzer und hat die Berechtigung Lesen, Schreiben oder Lesen/Schreiben. Ein Schlüssel mit Lesen/Schreiben auf einem Administratorkonto ist faktisch ein zweites Admin-Passwort, das oft Jahre in einer vergessenen Software liegt.
Öffnen Sie WooCommerce > Einstellungen > Erweitert > REST-API-Schlüssel. Die Liste zeigt Beschreibung, Benutzer, Berechtigungen und den letzten Zugriff. Gehen Sie jeden Eintrag durch:
- Kein letzter Zugriff seit Monaten oder unbekannte Beschreibung: Annullieren. Meldet sich danach eine Anwendung, legen Sie gezielt einen neuen Schlüssel an.
- Braucht die Anwendung nur Bestelldaten zum Lesen, etwa ein Auswertungstool, genügt die Berechtigung Lesen.
- Legen Sie neue Schlüssel nach Möglichkeit für einen eigenen Benutzer mit der Rolle Shop-Manager an statt für ein persönliches Administratorkonto. Dann bleibt der Schlüssel gültig, wenn der Mitarbeiter geht, und hat trotzdem keine Adminrechte.
Der Consumer Secret wird nur einmal angezeigt. Legen Sie ihn im Passwortmanager ab und nicht in Tickets oder E-Mails. Prüfen Sie im selben Bereich unter Webhooks, ob noch Adressen hinterlegt sind, an die Bestelldaten gesendet werden, obwohl die Anbindung nicht mehr existiert.
Verifizieren: Ohne Schlüssel liefert die API keine Bestellungen aus. Ein Aufruf wie curl -s https://ihr-shop.example/wp-json/wc/v3/orders antwortet mit woocommerce_rest_cannot_view und dem Status 401. In der Schlüsselliste stehen nur noch Einträge, die Sie einer laufenden Anwendung zuordnen können.
Schritt 5: Downloads, Protokolle und Kasse absichern
Verkaufen Sie digitale Produkte, liegen die Dateien unter wp-content/uploads/woocommerce_uploads. WooCommerce legt dort eine .htaccess mit deny from all an, damit niemand die Dateien direkt abrufen kann. Unter WooCommerce > Einstellungen > Produkte > Herunterladbare Produkte ist die Datei-Download-Methode „Downloads erzwingen“ voreingestellt; dabei liefert WooCommerce die Datei selbst aus, nachdem es die Berechtigung geprüft hat. Lassen Sie „Weiterleitungsmodus (unsicher) als letzte Option erlauben“ aus, denn dabei wird die echte Dateiadresse sichtbar. Mit „Downloads erfordern Anmeldung“ müssen Käufer zusätzlich angemeldet sein.
Protokolle schreibt WooCommerce nach wp-content/uploads/wc-logs, ebenfalls mit Sperre per .htaccess. Zahlungs-Plugins schreiben dort im Debug-Modus teils ausführliche Anfragen hinein. Schalten Sie Debug-Protokolle nach der Fehlersuche wieder ab und löschen Sie alte Protokolle unter WooCommerce > Status > Protokolle.
Ein wichtiger Haken: .htaccess wirkt nur unter Apache. Auf Nginx müssen Sie beide Verzeichnisse im Server-Block selbst sperren, wie in WordPress-Server härten: Nginx-Regeln für sensible Dateien beschrieben.
Gegen automatisierte Kartentests, bei denen Angreifer gestohlene Kartennummern über Ihre Kasse ausprobieren, gibt es unter WooCommerce > Einstellungen > Erweitert > Funktionen die Option Anfragebegrenzung beim Bezahlvorgang. Sie ist ab Werk aus. Ohne weitere Anpassung erlaubt WooCommerce dann 25 Anfragen in 10 Sekunden je angemeldetem Benutzer oder IP-Adresse. Läuft der Shop hinter einem Proxy oder CDN, braucht die Begrenzung zusätzlich die Proxy-Unterstützung, sonst zählen alle Kunden als eine Adresse; die Einstellungen dafür beschreibt die WooCommerce-Entwicklerdokumentation.
Viele dieser Punkte sind keine einmalige Einrichtung: Zahlungs-Plugins bekommen Sicherheitsupdates, Schlüssel und Konten sammeln sich an, Protokolle wachsen. Wer das nicht selbst im Kalender halten möchte, kann es abgeben: Die WordPress-Wartung von wordpressupdate.de übernimmt Updates von WordPress, Plugins und Themes mit Kompatibilitätsprüfung, wöchentliche Backups auf externen Speicher und die Einrichtung und Pflege der Firewall.
Verifizieren: Ein direkter Aufruf einer Datei unter /wp-content/uploads/woocommerce_uploads/ oder /wp-content/uploads/wc-logs/ liefert den Status 403. Unter „Funktionen“ ist die Anfragebegrenzung aktiv.
Typische Fehler
- Protokolle oder Downloads sind öffentlich abrufbar. Der Server ist Nginx, oder Apache wertet
.htaccessnicht aus (AllowOverride None). Prüfen Sie beide Pfade mitcurl -Iund sperren Sie sie in der Serverkonfiguration. - Anwendung meldet nach dem Aufräumen
woocommerce_rest_authentication_erroroder 401. Sie haben einen Schlüssel annulliert, der noch genutzt wurde. Legen Sie einen neuen mit passender Berechtigung an; der alte lässt sich nicht wiederherstellen. - Shop-Manager sieht einen Menüpunkt nicht. Das ist meist gewollt, etwa bei Plugins oder allgemeinen Einstellungen. Geben Sie nicht aus Bequemlichkeit Administratorrechte, sondern prüfen Sie, ob die Aufgabe wirklich zur Rolle gehört.
- Nach Aktivieren der Anfragebegrenzung scheitern Bestellungen. Hinter einem Proxy teilen sich alle Kunden die Adresse des Proxys. Aktivieren Sie die Proxy-Unterstützung oder schalten Sie die Begrenzung vorerst wieder ab.
- Kunden landen beim Aufruf von
/wp-admin/auf „Mein Konto“. Das ist die gewollte Umleitung für die Rolle Kunde und kein Fehler.
Häufige Fragen
Speichert WooCommerce Kreditkartennummern?
WooCommerce selbst nicht. Ob Kartendaten Ihren Server berühren, hängt vom Zahlungs-Plugin ab. Bei weitergeleiteten Zahlungsseiten und eingebetteten Feldern der Anbieter sieht Ihr Server nur Tokens.
Reicht ein Sicherheits-Plugin für den Shop?
Eine Firewall und ein Login-Schutz helfen, etwa mit Wordfence. Die Punkte dieser Anleitung ersetzt das nicht, denn Rollen, API-Schlüssel und Zahlungsarten muss jemand bewusst verwalten.
Wie oft sollte ich Konten und Schlüssel prüfen?
Ein fester Termin einmal im Quartal ist für kleine Shops ein vernünftiger Rhythmus, zusätzlich bei jedem Personal- oder Dienstleisterwechsel.
Testumfang
Wir haben die Werkseinstellungen auf einer Testinstallation mit WordPress 7.1.2 und deutschsprachigem WooCommerce nachgesehen und die Rechte des Shop-Managers mit echten Testkonten geprüft. Die REST-API gab ohne Schlüssel keine Bestellungen heraus, und die gesperrten Verzeichnisse antworteten unter Apache mit 403. Echte Zahlungs-Plugins und Nginx-Server haben wir nicht getestet. Probieren Sie Änderungen an der Kasse deshalb zuerst mit einer Testbestellung aus.
Fazit
Die meisten Risiken in einem kleinen WooCommerce-Shop entstehen nicht durch exotische Lücken, sondern durch zu viele Rechte, vergessene Schlüssel und Zahlungsarten, die niemand mehr pflegt. Halten Sie Kartendaten beim Zahlungsanbieter, vergeben Sie Rollen nach Aufgabe, räumen Sie API-Schlüssel regelmäßig auf und prüfen Sie, dass Downloads und Protokolle wirklich gesperrt sind. Wer die laufenden Updates und Backups des Shops nicht selbst übernehmen möchte, kann sie an die WordPress-Wartung abgeben.
Weiterführende Anleitungen und Quellen
- Zwei-Faktor-Authentifizierung für den WordPress-Login einrichten
- Benutzer bei Mitarbeiterwechsel anpassen
- WordPress-Server härten: Nginx-Regeln für sensible Dateien
- WooCommerce auf wordpress.org
- WooCommerce-Dokumentation: PCI-DSS Compliance and WooCommerce
- WooCommerce-Dokumentation: WooCommerce REST API
- WooCommerce-Entwicklerdokumentation: Rate Limiting


