Wie verberge ich Benutzernamen in WordPress und verhindere User Enumeration?
Von Eureka Studio · Aktualisiert
Kurze Antwort
WordPress zeigt Benutzernamen an vier öffentlichen Stellen: am REST-Endpunkt /wp-json/wp/v2/users, bei ?author=1-Weiterleitungen, in den URLs der Autorenarchive und in der Benutzer-Sitemap. Um sie zu verbergen, blockiere die REST-Liste für abgemeldete Besucher, stoppe ?author=-Scans, entferne die Benutzer-Sitemap und vereinheitliche die Login-Fehlermeldungen. Ein Plugin kann alle vier erledigen; teste danach jede Stelle.
Schritte
1Schritt 1
Sehen, was WordPress heute preisgibt
Rufe abgemeldet yoursite.com/wp-json/wp/v2/users auf. Bei einer Standardinstallation bekommst du eine JSON-Liste, in der im Feld slug der Login-Name jedes Autors steht.
2Schritt 2
Den Autoren-Scan ausprobieren
Rufe jetzt yoursite.com/?author=1 auf. WordPress leitet auf /author/dein-benutzername/ weiter und schreibt den Namen damit in die Adressleiste. Bots zählen 1, 2, 3 hoch und sammeln so jeden Benutzer ein.
3Schritt 3
Die vier Stellen schließen
Öffne Hushfort → Angriffsflächen-Härtung und schalte sie ein. Lass „REST-Benutzerliste“, „Autoren-Scan“ („?author=1-Scans blockieren“), „Autorenliste in der Sitemap“ und „oEmbed-Autorinfo“ aktiviert und speichere.
4Schritt 4
In einem privaten Fenster erneut testen
Wiederhole dieselben Anfragen abgemeldet. Die Benutzerliste antwortet jetzt mit „rest_no_route“ und dem Status 404, und ?author=1 leitet nicht mehr auf einen Benutzernamen weiter.
Warum das wichtig ist
Für einen Login braucht ein Angreifer zwei Dinge: einen Benutzernamen und ein Passwort. WordPress liefert die erste Hälfte von Haus aus mit. Das ist kein Fehler; jede dieser Stellen hat ihren Grund (Feeds für Apps, schöne Autoren-URLs, Suchmaschinen). Zusammen erlauben sie aber jedem Bot, in Sekunden eine Liste aller Login-Namen deiner Website zu erstellen. Wer die Benutzernamen in WordPress verbirgt, nimmt Angreifern diese Hälfte wieder weg.
Benutzernamen zu verbergen macht ein schwaches Passwort nicht sicher. Es nimmt aber die leichte Hälfte des Rätsels weg, sodass jeder Rateversuch Name und Passwort treffen muss. Zusammen mit Login-Limits und Zwei-Faktor-Login wird Raten damit von langsam zu aussichtslos.
Die vier Stellen, an denen WordPress Benutzernamen veröffentlicht:
- REST-API –
/wp-json/wp/v2/userslistet Autoren mit ihrem Slug auf, der meist dem Login-Namen entspricht. - Autoren-Scans –
/?author=1leitet auf/author/login-name/weiter. - Autorenarchive – die Archiv-URL selbst enthält den Autoren-Slug.
- Sitemap –
/wp-sitemap-users-1.xmllistet die URLs der Autorenarchive auf. Auch oEmbed-Antworten können Autorinformationen enthalten.
Häufige Fehler
- Eine Stelle reparieren und es dabei belassen.
?author=zu schließen, während die REST-Liste offen bleibt, ändert für einen Bot nichts. Prüfe alle vier. - Öffentlicher Name gleich Login-Name. Selbst wenn jede Lücke geschlossen ist, verrät ein Theme, das „Posted by admin“ ausgibt, den Namen. Lege unter Benutzer → Profil einen anderen öffentlichen Namen fest.
- Echte Autorenseiten kaputtmachen. In einem Blog mit mehreren Autoren sind Autorenarchive nützlich. Blockiere die Zahlenscans statt der Archive selbst.
- Detaillierte Login-Fehler. „Das Passwort, das du für den Benutzernamen jane eingegeben hast, ist nicht korrekt“ bestätigt, dass der Name existiert. Verwende eine Meldung für beide Fälle.
Ohne Plugin
Das meiste davon lässt sich mit einem Must-use-Plugin abdecken
(wp-content/mu-plugins/hide-users.php):
<?php
// 1. REST user list: logged-out visitors get nothing.
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;
} );
// 2. ?author=N scans: stop the redirect that reveals the name.
add_action( 'template_redirect', function () {
if ( isset( $_GET['author'] ) && ! is_admin() ) {
wp_safe_redirect( home_url( '/' ), 301 );
exit;
}
} );
// 3. Core sitemap: drop the users provider.
add_filter( 'wp_sitemaps_add_provider', function ( $provider, $name ) {
return 'users' === $name ? false : $provider;
}, 10, 2 );
// 4. Same message for wrong username and wrong password.
add_filter( 'login_errors', function () {
return 'The username or password is incorrect.';
} );
Einschränkungen: Teste das zuerst auf einer Staging-Website, denn Themes und Plugins lesen manchmal die REST-Benutzerliste. Der Autoren-Slug in den Archiv-URLs ändert sich dadurch nicht; dafür musst du den Nicename jedes Autors ändern oder ein Plugin für öffentliche Namen nutzen. Und es ist eine Datei mehr, an die du denken musst, wenn du die Website umziehst oder neu aufbaust.
Wenn etwas schiefgeht
- Eine Integration hat ihre Autorenliste verloren. Manche externen Werkzeuge lesen
/wp/v2/usersohne Anmeldung. Gib ihnen ein Anwendungspasswort, damit sie sich authentifizieren, oder erlaube die Liste wieder. - Autorenseiten zeigen einen 404-Fehler. Du hast gewählt, Autorenarchive komplett zu deaktivieren. Wechsle zur Option, die nur Zahlenscans blockiert.
- Das SEO-Plugin listet weiter Autoren auf. Viele SEO-Plugins erzeugen eine eigene Autoren-Sitemap. Schalte Autoren-Sitemaps auch in diesem Plugin ab.
Mit Hushfort
Der Benutzernamen-Schutz gehört zu Hushfort Pro. Der Angriffsflächen-Scan, der zeigt, was noch durchsickert, steckt in Hushfort Security, dem kostenlosen WordPress-Sicherheitsplugin.
Der Benutzernamen-Schutz, Teil der Ebene Angriffsflächen-Härtung von Hushfort, schließt alle vier Stellen auf einer einzigen Seite:
- blockiert die REST-Liste
/wp/v2/usersfür Besucher, die nicht angemeldet sind, - blockiert
?author=N-Scans und behält die Archive unter/author/name/(oder deaktiviert die Archive ganz, wenn du das vorziehst), - entfernt die Benutzer-Sitemap und Autorendetails aus oEmbed-Antworten,
- macht die Login-Fehlermeldungen bei falschem Benutzernamen und falschem Passwort identisch.
Anschließend testet der Angriffsflächen-Scan jede Stelle mit echten Anfragen und nennt jeden Benutzernamen, der noch durchsickert.
Häufige Fragen
Was ist User Enumeration in WordPress?
Ist es ein Sicherheitsrisiko, wenn mein Benutzername sichtbar ist?
Macht das Blockieren der REST-Benutzerliste den Editor kaputt?
Kann ich die Autorenarchiv-Seiten behalten?
Warum sind die Login-Fehlermeldungen wichtig?
Verwandte Anleitungen
Wie mache ich einen Sicherheitscheck, was meine WordPress-Website preisgibt?
WordPress-Sicherheitscheck wie ein Bot: Fünf Anfragen zeigen, ob Login, XML-RPC und Benutzernamen offen liegen – und wie du schließt, was du findest.
Zu den SchrittenWas ist xmlrpc.php, und wie deaktiviere ich XML-RPC in WordPress?
XML-RPC in WordPress deaktivieren: xmlrpc.php ist eine zweite Login-Tür, die ein versteckter Login nicht schließt. Sicher schließen, Pingbacks behalten.
Zu den SchrittenWie kann ich in WordPress die Login-Versuche begrenzen?
Login-Versuche in WordPress begrenzen und Brute Force stoppen: IPs nach wenigen Fehlversuchen sperren. Gute Werte, Code ohne Plugin, typische Lücken.
Zu den Schritten



