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

Affiliate-Hinweis v3.1
Affiliate-Hinweis v3.2 (mobil)

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/users

2️⃣ Benutzernamen, die über wp-json sichtbar werden

  • ↪️ Warum sperren: users 401 · auch auf Autorenseiten sichtbar

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

  • ↪️ Speichern im Block-Editor · MCP mit 0 Tools

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 BesucherSpeichern durch Nicht-Admin-KontenPasst für
Standard (aktiviert)Benutzernamen sichtbarWird gespeichert—
Für Nicht-Administratoren deaktivieren401Speichern scheitertWebsites ohne Autoren- oder Mitarbeiterkonten
Deaktivieren, wenn abgemeldet401Wird gespeichertWebsites mit Autorenkonten; für Token-Verbindungen wie MCP einen Ausnahmepfad eintragen

4️⃣ Nur abgemeldete Anfragen sperren (Perfmatters)

  • ↪️ Wo einstellen · Antwort 401 prüfen

Ä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].

WordPress Einstellungen → Perfmatters → Allgemein (WordPress REST API)
Perfmatters Disable REST API: Disable When Logged Out

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

Perfmatters settings simulator: General → Core
Perfmatters Einstellungs-Simulator · Perfmatters Test und Anleitung

Ö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.

🔌 Dieselbe Anfrage, zwei Antworten GET /wp-json/wp/v2/users
Nicht gesperrte Website
200
Auch nicht angemeldete Besucher sehen die Benutzernamen.
[
  {
    "id": 1,
    "name": "User A",
    "slug": "user_a",
    "link": "https://example.com/author/user_a/"
  }
]
Website mit [Deaktivieren, wenn abgemeldet]
401
Anfragen ohne Anmeldung bekommen eine Antwort 401 mit Meldung.
{   "code": "rest_authentication_error",   "message": "Sorry, you do not have permission to make REST API requests.",   "data": { "status": 401 } }
slug Im Slug steht standardmäßig der Login-Name unverändert.
Links sind aus der Antwort nur die vier Felder id, name, slug und link übernommen; der Name ist ein Beispiel (user_a).


5️⃣ Ausnahmen für gesperrte Pfade

  • ↪️ MCP-Pfad als Ausnahme · Unterschied zu REST-API-Links entfernen

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.

🚦 Reihenfolge, die eine Anfrage durchläuft
Vor der Ausnahme · MCP-Anfrage
Anfrage des MCP-Konnektors von claude.ai nach der Authentifizierung, mit [Deaktivieren, wenn abgemeldet].
Perfmatters
Gesperrt mit 401
→↓
MCP prüft Token
Nie erreicht
→↓
Ergebnis
0 Tools
Nach der Ausnahme · MCP-Anfrage
/mcp/mcp-oauth-server ist als Pfad in den Perfmatters-Ausnahmen eingetragen.
Perfmatters
Kommt als Ausnahmepfad durch
→↓
MCP prüft Token
MCP prüft selbst
→↓
Ergebnis
Ohne Token 401
[MCP authentication required.]
Nach der Ausnahme · /wp-json/wp/v2/users
Pfade, die nicht in den Ausnahmen stehen, bleiben gesperrt.
Perfmatters
Gesperrt mit 401
→↓
Ergebnis
Benutzernamen bleiben verborgen
⚠️ Perfmatters sperrt die Anfrage, bevor MCP das Token prüft.

[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

xmlrpc.php ist eine andere Adresse als die REST API und antwortet auch dann, wenn die REST API gesperrt ist. Auf der Testseite wurden allein am 8. Oktober 2026 734 POST-Anfragen an xmlrpc.php protokolliert; in Perfmatters sperrst du sie mit [XML-RPC deaktivieren] im selben Bereich [Core].

WP Rocket hat /wp-json/-Adressen auf der Ausschlussliste des Caches, Antworten der REST API ändern sich also sofort nach dem Speichern. Einstellungen, die das HTML der Seite ändern, wie [REST-API-Links entfernen], greifen erst nach dem Leeren des Caches.

Nein. Der WordPress Block-Editor schickt beim Speichern Anfragen an die REST API, und auch MCP-Konnektoren, die KI-Tools wie claude.ai anbinden, nutzen Pfade unter /wp-json/.

ℹ️ 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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Beweisen Sie, dass Sie ein Mensch sind: 9   +   1   =