Benutzer-Enumeration in WordPress verhindern: Admin-Namen und Autorenarchive schützen
Wo WordPress Benutzernamen verrät und wie Sie Autorenarchive, REST-API, Benutzer-Sitemap, oEmbed und Login-Meldungen mit einem Must-Use-Plugin absichern. Mit Tests vorher und nachher per curl.
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

Wer eine WordPress-Website angreift, braucht für Anmeldeversuche zuerst einen gültigen Benutzernamen. WordPress gibt diesen in der Grundeinstellung an mehreren Stellen preis: über Autorenarchive, die REST-API, die Benutzer-Sitemap, oEmbed und sogar über die Fehlermeldung der Anmeldeseite. Das allein ist keine Sicherheitslücke, denn ein gutes Passwort und eine Zwei-Faktor-Anmeldung schützen auch bei bekanntem Namen. Es nimmt Angreifern aber die halbe Arbeit ab. Diese Anleitung zeigt, wo WordPress 7.1 Benutzernamen verrät, wie Sie jede Quelle mit einem kleinen Must-Use-Plugin schließen und was Sie an den Konten selbst ändern sollten. Jede Stelle wurde im Labor vorher und nachher mit curl geprüft.
Voraussetzungen
- WordPress: getestet mit WordPress 7.1.2. Die Benutzer-Sitemap gibt es seit WordPress 5.5, die übrigen Filter schon länger.
- PHP: im Test PHP 8.4, jede von WordPress unterstützte Version funktioniert.
- Zugriff: Backend mit der Rolle Administrator, Dateizugriff per SFTP, FTP oder SSH für das Must-Use-Plugin, optional WP-CLI.
- Werkzeug:
curlauf Ihrem Rechner oder Server für die Tests. Unter Windows 10 und 11 istcurl.exeenthalten. - Backup: eine aktuelle Sicherung der Datenbank, bevor Sie Benutzerkonten ändern oder löschen.
- Abstimmung: Klären Sie, ob Ihr Theme Autorenseiten bewusst nutzt, etwa als Teamseite. Dann passen Sie Schritt 4 an, statt die Archive umzuleiten.
Schritt 1: Prüfen, wo Ihre Website Benutzernamen verrät
WordPress kennt pro Konto drei Namen. Der Anmeldename (user_login) dient nur der Anmeldung. Der URL-Name (user_nicename) erscheint in Autoren-URLs und wird bei der Anlage aus dem Anmeldenamen erzeugt. Der öffentliche Name (display_name) steht unter Beiträgen. Solange URL-Name und Anmeldename gleich sind, verrät jede Autoren-URL den Anmeldenamen. Testen Sie diese Quellen, ersetzen Sie www.example.de durch Ihre Adresse:
curl -s -o /dev/null -w "%{http_code} %{redirect_url}\n" "https://www.example.de/?author=1"
curl -s "https://www.example.de/wp-json/wp/v2/users"
curl -s "https://www.example.de/wp-sitemap-users-1.xml"
curl -s -d "log=admin&pwd=falsch" https://www.example.de/wp-login.php | grep -A2 login_error
Im Test mit Standardeinstellungen ergab das:
301 http://127.0.0.1:21448/author/admin/
[{"id":1,"name":"admin","slug":"admin", ...},{"id":2,"name":"Anna Beispiel","slug":"redakteurin", ...}]
<loc>http://127.0.0.1:21448/author/admin/
Fehler: Das eingegebene Passwort für den Benutzernamen admin ist nicht korrekt.
Die Umleitung von ?author=1 nennt den URL-Namen des ersten Kontos, die REST-API listet alle Konten mit veröffentlichten Beiträgen, und die Anmeldeseite bestätigt, dass admin existiert. Bei einem unbekannten Namen meldete sie dagegen „Der Benutzername gibtsnicht ist auf dieser Website nicht registriert.“. Beide Meldungen zusammen erlauben es, Namen gezielt durchzuprobieren. Weitere Quellen sind die oEmbed-Schnittstelle, die author_name und author_url ausgibt, sowie der RSS-Feed mit dem öffentlichen Namen.
Verifizieren: Sie haben notiert, welche der Quellen auf Ihrer Website einen Anmeldenamen zeigen. Das ist Ihre Vergleichsliste für Schritt 5.
Schritt 2: Anmeldename, URL-Name und öffentlichen Namen trennen
Die Umleitungen aus Schritt 4 verbergen die Namen nur. Wichtiger ist, dass die sichtbaren Namen gar nicht erst mit dem Anmeldenamen übereinstimmen. Den öffentlichen Namen ändern Sie unter Benutzer > Profil: Tragen Sie einen Spitznamen ein, etwa „Redaktion“, speichern Sie und wählen Sie ihn danach unter Öffentlicher Name aus. Den URL-Namen zeigt WordPress im Backend nicht an. Ändern Sie ihn per WP-CLI:
wp user list --fields=ID,user_login,user_nicename,display_name
wp user update 1 --display_name="Redaktion" --user_nicename="redaktion"
Im Test lautete die Liste danach:
ID user_login user_nicename display_name
1 admin redaktion Redaktion
2 redakteurin autorin-a Anna Beispiel
Die Autoren-URL lautet dann /author/redaktion/. Links auf die alte Autoren-URL laufen danach ins Leere, im Test antwortete /author/admin/ mit Status 404. Ohne WP-CLI ändern Sie den URL-Namen über die Datenbankverwaltung des Hosters in der Spalte user_nicename der Tabelle wp_users, nur dort und nur nach einem Backup.
Verifizieren: In der Ausgabe von wp user list unterscheidet sich bei jedem Konto user_login von user_nicename und display_name.
Schritt 3: Vorhersehbare Anmeldenamen ersetzen
Konten mit Namen wie admin, administrator oder dem Firmennamen werden zuerst ausprobiert. Den Anmeldenamen kann WordPress nicht ändern. Im Test lieferte wp user update 1 --user_login=chef nur Error: Need some fields to update., das Feld wird ignoriert. Der saubere Weg ist ein neues Konto, auf das Sie die Inhalte übertragen:
wp user create verwaltung-7k verwaltung@example.de --role=administrator --porcelain
wp user update NEUE_ID --user_nicename=verwaltung --display_name="Verwaltung"
wp user delete 1 --reassign=NEUE_ID
--porcelain gibt nur die neue ID aus, die Sie in den folgenden Befehlen einsetzen. Das Passwort erhalten Sie über die Funktion „Passwort vergessen“ an die angegebene Adresse oder setzen es im Backend. Melden Sie sich mit dem neuen Konto an und prüfen Sie es, bevor Sie das alte löschen. --reassign überträgt alle Beiträge. Ohne diese Option löscht WordPress die Inhalte des Kontos mit. Im Test gehörte der Beitrag „Hello world!“ danach dem neuen Konto.
Verifizieren: wp user list --role=administrator zeigt kein Konto mit vorhersehbarem Namen mehr, und wp post list --fields=ID,post_title,post_author zeigt keine Beiträge ohne gültigen Autor.
Schritt 4: Must-Use-Plugin gegen Enumeration anlegen
Legen Sie die Datei wp-content/mu-plugins/benutzer-schutz.php an. WordPress lädt Dateien in diesem Ordner automatisch, sie lassen sich im Backend nicht versehentlich deaktivieren und überstehen Theme-Wechsel. Den Ordner erzeugen Sie, falls er fehlt.
<?php
/**
* Plugin Name: Benutzer-Enumeration erschweren
*/
defined( 'ABSPATH' ) || exit;
// 1. Autorenarchive und ?author=N auf die Startseite umleiten.
add_action( 'template_redirect', function () {
if ( is_author() || isset( $_GET['author'] ) ) {
wp_safe_redirect( home_url( '/' ), 301 );
exit;
}
}, 1 );
// 2. Benutzer-Endpunkte der REST-API nur für angemeldete Benutzer.
add_filter( 'rest_endpoints', function ( $endpoints ) {
if ( ! is_user_logged_in() ) {
unset( $endpoints['/wp/v2/users'], $endpoints['/wp/v2/users/(?P<id>[\d]+)'] );
}
return $endpoints;
} );
// 3. Benutzer-Sitemap abschalten.
add_filter( 'wp_sitemaps_add_provider', function ( $provider, $name ) {
return 'users' === $name ? false : $provider;
}, 10, 2 );
// 4. Autorenangaben aus oEmbed entfernen.
add_filter( 'oembed_response_data', function ( $data ) {
unset( $data['author_name'], $data['author_url'] );
return $data;
} );
// 5. Einheitliche Fehlermeldung bei der Anmeldung.
add_filter( 'login_errors', function () {
return '<strong>Fehler:</strong> Die Anmeldedaten sind nicht korrekt.';
} );
Zu den Abschnitten: Die Umleitung greift früh in template_redirect und erfasst sowohl /author/name/ als auch ?author=N. Nutzt Ihr Theme Autorenseiten bewusst, lassen Sie Abschnitt 1 weg und verlassen Sie sich auf die getrennten Namen aus Schritt 2. Abschnitt 2 blendet die Routen für Gäste aus. Angemeldete Benutzer, also auch der Block-Editor, erreichen sie weiter. Im Test lieferte die Route für den angemeldeten Administrator Status 200. Abschnitt 5 verhindert, dass die Anmeldeseite zwischen falschem Namen und falschem Passwort unterscheidet.
Verifizieren: php -l wp-content/mu-plugins/benutzer-schutz.php meldet No syntax errors detected. Unter Plugins > Installierte Plugins erscheint der Reiter „Must-Use“ mit dem Eintrag, und die Startseite lädt mit Status 200.
Schritt 5: Wirkung mit denselben Tests prüfen
Wiederholen Sie die Befehle aus Schritt 1 in einem Fenster, in dem Sie nicht angemeldet sind. Im Test ergaben sie nach Aktivierung des Plugins:
?author=1 301 http://127.0.0.1:21448/
/author/redaktion/ 301 http://127.0.0.1:21448/
/wp-json/wp/v2/users {"code":"rest_no_route", ... "status":404}
/wp-sitemap-users-1.xml 404
wp-login.php (admin) Fehler: Die Anmeldedaten sind nicht korrekt.
wp-login.php (unbekannt) Fehler: Die Anmeldedaten sind nicht korrekt.
Der Sitemap-Index führte nur noch Beiträge, Seiten und Kategorien, und die oEmbed-Antwort enthielt keine Felder author_name und author_url mehr. Prüfen Sie auch die Variante /?rest_route=/wp/v2/users, die ohne schöne Permalinks funktioniert. Sie lieferte im Test ebenfalls rest_no_route. Setzen Sie ein SEO-Plugin mit eigener Sitemap ein, prüfen Sie dessen Einstellungen für Autoren-Sitemaps separat.
Diese Maßnahmen schließen eine Informationsquelle, sie ersetzen keinen laufenden Schutz. Updates, Backups und Firewall bleiben Daueraufgaben. Wer diese nicht selbst im Kalender halten möchte, kann sie abgeben: Die WordPress-Wartung von wordpressupdate.de übernimmt Updates mit Kompatibilitätsprüfung, wöchentliche Backups auf externen Speicher sowie Einrichtung und Wartung der Firewall.
Verifizieren: Keine der Quellen aus Schritt 1 zeigt noch einen Anmeldenamen, und die Anmeldeseite gibt bei falschem Namen und falschem Passwort dieselbe Meldung aus.
Typische Fehler
- Nach Schritt 3 sind Beiträge verschwunden:
wp user deletelief ohne--reassign. Dann hilft nur das Backup aus den Voraussetzungen, siehe Einzelne Beiträge und Medien aus einem Backup zurückholen. Error: Need some fields to update.beiwp user update --user_login=...: Der Anmeldename lässt sich so nicht ändern. Legen Sie ein neues Konto an, wie in Schritt 3 beschrieben.- Die REST-API liefert weiterhin Benutzer: Sie testen in einem Browser, in dem Sie angemeldet sind. Testen Sie mit
curloder in einem privaten Fenster. Liegt ein Seiten-Cache vor der Website, leeren Sie ihn. - Ein Plugin oder die App meldet Fehler beim Laden von Benutzern: Der Dienst nutzt die Benutzer-Endpunkte ohne Anmeldung. Nehmen Sie Abschnitt 2 heraus oder erlauben Sie den Zugriff über Anwendungspasswörter.
- „Auf dieser Website ist ein kritischer Fehler aufgetreten.“ nach dem Hochladen: Syntaxfehler im Must-Use-Plugin. Benennen Sie die Datei per SFTP um, prüfen Sie sie mit
php -lund laden Sie sie korrigiert hoch.
Häufige Fragen
Reicht es, Benutzernamen zu verstecken?
Nein. Das erschwert gezielte Anmeldeversuche, verhindert sie aber nicht. Der eigentliche Schutz sind lange, einzigartige Passwörter, eine Zwei-Faktor-Anmeldung und eine Begrenzung von Anmeldeversuchen. Beides beschreiben Zwei-Faktor-Authentifizierung für WordPress einrichten und Brute-Force-Angriffe auf wp-login.php abwehren.
Verrät der RSS-Feed auch den Benutzernamen?
Der Feed enthält den öffentlichen Namen im Feld dc:creator. Nach Schritt 2 ist das nicht mehr der Anmeldename. Im Test standen dort „Redaktion“ und „Anna Beispiel“.
Schadet die Umleitung der Autorenarchive der Suchmaschinenoptimierung?
Bei Unternehmenswebsites mit wenigen Autoren meist nicht, weil die Autorenarchive dieselben Beiträge wie die Startseite oder der Blog zeigen. Wer Autorenprofile bewusst als Teamseiten nutzt, verzichtet auf Abschnitt 1 und setzt auf getrennte Namen.
Testumfang
Wir haben das am 30.09.2026 auf einer Testinstanz mit WordPress 7.1.2 und zwei Konten mit Beiträgen durchgespielt. Vorher und nachher haben wir per curl geprüft, was Autorenabfragen und REST-Schnittstelle über die Konten preisgeben.
Sitemaps von SEO-Plugins, Seiten-Caches und Multisite blieben dabei ungetestet. Setzen Sie so etwas ein, probieren Sie die Änderungen bitte zuerst auf einer Kopie Ihrer Seite aus.
Fazit
Getrennte Namen pro Konto und ein Must-Use-Plugin mit fünf Regeln schließen die üblichen Quellen, über die WordPress Benutzernamen verrät. Den Nutzen prüfen Sie mit denselben curl-Befehlen vorher und nachher. Der Schutz der Anmeldung selbst bleibt die wichtigere Aufgabe. Wer Updates, Backups und Firewall dauerhaft betreuen lassen möchte, findet das bei der WordPress-Wartung von Marcel Schönfelder.


