WordPress REST API: Warum nur abgemeldete Anfragen sperren statt ganz abschalten

Die WordPress REST API zeigt die Benutzernamen deiner Website über die Adresse wp-json auch Besuchern, die nicht angemeldet sind. Schaltest du sie ganz ab, kann das Speichern im Block-Editor scheitern; deshalb zeige ich hier, wie du nur abgemeldete Anfragen sperrst und das an der Antwort 401 prüfst.
1️⃣ Was ist die WordPress REST API: die Adresse wp-json und was sie tut
Die WordPress REST API ist eine eingebaute WordPress-Funktion, die Website-Daten wie Beiträge, Seiten und Benutzer im JSON-Format austauscht; sie antwortet unter /wp-json/ nach der Website-Adresse.
Unter /wp-json/ sind die Adressen nach Datenart aufgeteilt, etwa [wp/v2/posts], [wp/v2/pages] und [wp/v2/users]; jede dieser Adressen heißt Endpunkt. Auch der Block-Editor schickt beim Speichern eines Beitrags Anfragen an diese Adressen.
https://example.com/wp-json/
https://example.com/wp-json/wp/v2/posts
https://example.com/wp-json/wp/v2/pages
https://example.com/wp-json/wp/v2/users2️⃣ Benutzernamen, die über wp-json sichtbar werden
Der Endpunkt [wp/v2/users] liefert für jeden Benutzer, der Beiträge veröffentlicht hat, Anzeigenamen und Slug; im Slug steht standardmäßig der Login-Name unverändert. Auch beim Administratorkonto der Testseite https://testpilotweb.com/ waren Slug und Login-Name gleich.
Ist der Login-Name bekannt, muss ein Angreifer nur noch das Passwort herausfinden; am Anmeldebildschirm der Testseite wurden allein am 7. Oktober 2026 2.570 Brute-Force-Versuche protokolliert.
Auch wenn diese Adresse gesperrt ist, bleibt derselbe Name in der Adresse der Autorenseite (/author/name/) stehen.
3️⃣ Was beim kompletten Abschalten kaputtgeht
Schaltest du die WP REST API ganz ab, scheitert zuerst das Speichern im Block-Editor; deshalb teilt auch Perfmatters, eines der Optimierungs-Plugins für WordPress, das Abschalten in zwei Stufen: [Für Nicht-Administratoren deaktivieren] und [Deaktivieren, wenn abgemeldet]. Hat die Website Autoren- oder Mitarbeiterkonten, blockiert [Für Nicht-Administratoren deaktivieren] auch deren Speichern.
Selbst auf einer Website, die nur abgemeldete Anfragen sperrte, zeigte ein MCP-Konnektor in claude.ai nach der Authentifizierung 0 Tools. Im Server-Protokoll standen alle MCP-Anfragen mit 401; Ursache war, dass Perfmatters die Anfrage sperrte, bevor MCP das Token prüfen konnte.
| Wert von [REST-API deaktivieren] | users-Adresse für abgemeldete Besucher | Speichern durch Nicht-Admin-Konten | Passt für |
|---|---|---|---|
| Standard (aktiviert) | Benutzernamen sichtbar | Wird gespeichert | — |
| Für Nicht-Administratoren deaktivieren | 401 | Speichern scheitert | Websites ohne Autoren- oder Mitarbeiterkonten |
| Deaktivieren, wenn abgemeldet | 401 | Wird gespeichert | Websites mit Autorenkonten; für Token-Verbindungen wie MCP einen Ausnahmepfad eintragen |
4️⃣ Nur abgemeldete Anfragen sperren (Perfmatters)
Ändere im WordPress-Adminbereich unter [Einstellungen] → [Perfmatters] → [Allgemein] im Bereich [Core] den Wert von [REST-API deaktivieren] auf [Deaktivieren, wenn abgemeldet] und klicke auf [Änderungen speichern].


Sprachen von Perfmatters: Englisch (Standard), Koreanisch, Deutsch, Französisch, Italienisch, Niederländisch, Portugiesisch (Brasilien), Russisch, Ukrainisch, Türkisch, Bulgarisch, Ungarisch, Indonesisch, Persisch, Chinesisch (vereinfacht)

Öffnest du /wp-json/wp/v2/users ohne Anmeldung in einem Inkognito-Fenster, kommt eine Antwort 401 mit der Meldung [Sorry, you do not have permission to make REST API requests.] zurück, während der Block-Editor im angemeldeten Zustand weiter Beiträge speichert.
[
{
"id": 1,
"name": "User A",
"slug": "user_a",
"link": "https://example.com/author/user_a/"
}
]
{ "code": "rest_authentication_error", "message": "Sorry, you do not have permission to make REST API requests.", "data": { "status": 401 } }
5️⃣ Ausnahmen für gesperrte Pfade
Musst du bei aktiver Sperre nur einen bestimmten Pfad öffnen, trägst du ihn in den Filter [perfmatters_rest_api_exceptions] von Perfmatters ein. Das Problem mit 0 Tools beim MCP-Konnektor von claude.ai habe ich gelöst, indem ich im Perfmatters-Menü [Kode] ein PHP-Snippet angelegt und nur den MCP-Pfad als Ausnahme eingetragen habe.
add_filter('perfmatters_rest_api_exceptions', function($exceptions) {
$exceptions[] = '/mcp/mcp-oauth-server';
return $exceptions;
});Auch nach der Ausnahme sperrt MCP Anfragen ohne Token selbst, mit Antwort 401 und der Meldung [MCP authentication required.], und /wp-json/wp/v2/users liefert weiter die 401-Antwort von Perfmatters.
[MCP authentication required.]
[REST-API-Links entfernen] im selben Bereich [Core] entfernt nur den api.w.org-Link aus dem Seitenkopf und den Antwort-Headern; die WP REST API selbst antwortet weiter.
🔢 FAQ & empfohlene Inhalte
MCP
WP Rocket MCP Server
Wie du KI-Tools anbindest, damit sie statt des Adminbereichs den Cache leeren und Einstellungen ändern.
Sicherheit
Wordfence vs iThemes Security
Vergleich zweier Sicherheits-Plugins, die Brute-Force-Angriffe und Malware abwehren.
ℹ️ Affiliate-Hinweis
Die Inhalte dieser Website enthalten Affiliate-Links. Kauft ein Besucher über einen dieser Links ein Produkt oder eine Dienstleistung, erhält die Website vom Verkäufer eine Provision. Der Betrag, den der Käufer zahlt(bei Aktionsrabatten sinkt er ↓), steigt dadurch nicht. Angegebene Preise, Rabatte und Lagerbestände entsprechen dem Stand bei Erstellung und können abweichen; prüfe sie daher vor dem Kauf beim Verkäufer. Produkte werden nach eigenen Kriterien ausgewählt und bewertet, und Provisionen beeinflussen weder die Reihenfolge noch den Inhalt der Bewertungen.