---
title: "Benutzer-Enumeration in WordPress verhindern: Admin-Namen und Autorenarchive schützen"
date: 2026-09-30T21:16:58+02:00
modified: 2026-10-14T06:49:58+02:00
category: wordpress
type: how_to
author: Marcel Schönfelder
canonical: https://s-edv.com/anleitungen/wordpress-benutzer-enumeration-autorenarchive-schuetzen
keywords:
  - WordPress
  - Sicherheit
  - Benutzer
  - REST-API
  - Must-Use-Plugin
reading_time: 8
---

# Benutzer-Enumeration in WordPress verhindern: Admin-Namen und Autorenarchive schützen

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.

**Kurzfassung:** Prüfen Sie zuerst mit `curl`, ob `?author=1`, `/wp-json/wp/v2/users` und `/wp-sitemap-users-1.xml` Benutzernamen verraten. Trennen Sie dann Anmeldenamen, URL-Namen und öffentlichen Namen jedes Kontos. Ein Must-Use-Plugin leitet Autorenarchive um, sperrt die Benutzer-Endpunkte der REST-API für Gäste, schaltet die Benutzer-Sitemap ab, entfernt Autorenangaben aus oEmbed und vereinheitlicht die Fehlermeldung beim Login. Echten Schutz liefern weiterhin starke Passwörter und Zwei-Faktor-Anmeldung.

## 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:** `curl` auf Ihrem Rechner oder Server für die Tests. Unter Windows 10 und 11 ist `curl.exe` enthalten.
- [ ] **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:

```bash
$ 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:

```plaintext
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.

> **Prüfen:** 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:

```bash
$ 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:

```plaintext
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`. Bei einem anderen Tabellenpräfix heißt die Tabelle entsprechend anders. Ändern Sie nur diese Spalte und nur nach einem Backup.

> **Prüfen:** 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:

```bash
$ 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.

> **Prüfen:** `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.

Datei: `wp-content/mu-plugins/benutzer-schutz.php`

```php
<?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.

> **Prüfen:** `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:

```plaintext
?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](https://wordpressupdate.de/?utm_source=s-edv.com&utm_medium=artikel&utm_campaign=33) übernimmt Updates mit Kompatibilitätsprüfung, wöchentliche Backups auf externen Speicher sowie Einrichtung und Wartung der Firewall.

> **Prüfen:** 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 delete` lief ohne `--reassign`. Dann hilft nur das Backup aus den Voraussetzungen, siehe [Einzelne Beiträge und Medien aus einem Backup zurückholen](https://s-edv.com/anleitungen/wordpress-einzelne-beitraege-medien-aus-backup-wiederherstellen).

**`Error: Need some fields to update.`**

bei `wp 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 `curl` oder 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 -l` und 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](https://s-edv.com/anleitungen/wordpress-login-zwei-faktor-authentifizierung-einrichten) und [Brute-Force-Angriffe auf wp-login.php abwehren](https://s-edv.com/anleitungen/wordpress-brute-force-wp-login-xmlrpc-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.

## 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](https://wordpressupdate.de/?utm_source=s-edv.com&utm_medium=fazit&utm_campaign=33).

## Weiterführende Anleitungen und Quellen

- [Zwei-Faktor-Authentifizierung für WordPress einrichten](https://s-edv.com/anleitungen/wordpress-login-zwei-faktor-authentifizierung-einrichten)
- [Brute-Force-Angriffe auf wp-login.php abwehren](https://s-edv.com/anleitungen/wordpress-brute-force-wp-login-xmlrpc-abwehren)
- [XML-RPC in WordPress deaktivieren oder einschränken](https://s-edv.com/anleitungen/wordpress-xml-rpc-deaktivieren-einschraenken)
- [REST-API-Handbuch: Users](https://developer.wordpress.org/rest-api/reference/users/)
- [Code-Referenz: wp_sitemaps_add_provider](https://developer.wordpress.org/reference/hooks/wp_sitemaps_add_provider/)
- [Code-Referenz: login_errors](https://developer.wordpress.org/reference/hooks/login_errors/)
- [WP-CLI-Handbuch: wp user delete](https://developer.wordpress.org/cli/commands/user/delete/)
