Was die öffentliche WordPress-Schnittstelle verrät: REST-Routen und Datenzugriff prüfen

Management Summary
WordPress veröffentlicht ein Verzeichnis von Zugängen, über die Programme Daten mit einer Website austauschen können. Das hilft Redaktionswerkzeugen, Erweiterungen und anderen Anwendungen, verfügbare Funktionen zu finden. Ein aufgeführter Zugang ist jedoch keine Erlaubnis, private Informationen zu lesen oder die Website zu verändern. Der Beitrag erklärt die Aussagekraft dieses Verzeichnisses. Namen, Anzahlen und erfolgreiche Antworten beweisen allein kein Sicherheitsproblem; entscheidend sind die tatsächlich zugänglichen Daten und Aktionen.
Inhalt
Das REST-Verzeichnis einer WordPress-Seite beschreibt öffentlich sichtbare API-Routen. Eine Route ist ein adressierbarer Pfad, ein Endpunkt verbindet diesen Pfad mit einer HTTP-Methode und einer Verarbeitung. Ein Eintrag im Verzeichnis bedeutet deshalb noch keinen anonymen Zugriff auf sämtliche Daten oder Schreibfunktionen.

Das Verzeichnis finden
Häufig liegt der Einstieg unter /wp-json/. Die zuverlässigere Ausgangsinformation ist der von WordPress veröffentlichte Link mit der Relation https://api.w.org/, beispielsweise im HTTP-Header oder im HTML. Unterverzeichnisse, geänderte Präfixe und vorgeschaltete Systeme können den tatsächlichen API-Pfad beeinflussen.
WordPress unterstützt außerdem ?rest_route=/. Diese Form ist nicht ausschließlich auf Installationen ohne sprechende Permalinks beschränkt. Eine Sperre eines einzelnen URL-Pfads beweist deshalb keine vollständige Zugriffsbeschränkung. Umgekehrt beweist eine Antwort mit Status 404 am geratenen Pfad weder eine abgeschaltete API noch überhaupt eine WordPress-Installation.
Routen zählen ist kein Plugininventar
Ein Namensraum wie vendor/v1 gruppiert Routen. Die Versionsziffer bezeichnet üblicherweise eine API-Version, nicht die installierte Pluginversion. Erweiterungen können mehrere Namensräume registrieren, vorhandene Namensräume ergänzen oder ganz ohne REST-Routen arbeiten. Auch Themes und individueller Code können Routen hinzufügen. Öffentlich sichtbare Verzeichnisdaten sind zusätzlich filterbar.
Die Routenzahl beschreibt daher die Einträge des konkret gelesenen Verzeichnisses. Die Zahl ist weder eine vollständige Liste installierter Plugins noch ein Maß für Sicherheitslücken. Auch ähnliche Routenzahlen beweisen keine gemeinsame Plattform. Für ein vollständiges Erweiterungsinventar sind administrative Bestandsdaten erforderlich.
Eine deklarierte Methode wie POST oder DELETE dokumentiert eine Schnittstelle. Eine anonyme GET-Stichprobe prüft deren Schreibberechtigungen nicht. Entscheidend sind die konkreten Berechtigungsprüfungen und die Daten, die unter den jeweiligen Anfragebedingungen zurückkommen.
Status und Inhalt gemeinsam lesen
- 200: Der Abruf war auf HTTP-Ebene erfolgreich. Erst Inhaltstyp, vollständig lesbares JSON und die erwartete Datenstruktur zeigen, ob tatsächlich die angefragte REST-Antwort vorliegt. Eine HTML-Sperrseite mit 200 ist keine Benutzerliste.
- 401 oder 403: Die konkrete Anfrage wurde abgewiesen. Eine WordPress-Fehlerantwort, eine Firewall und ein vorgeschalteter Dienst sind unterschiedliche Ursachen. Daraus folgt keine allgemeine Abnahme aller Berechtigungen.
- 404: Unter dieser Adresse wurde keine passende Ressource ausgeliefert. Falscher Pfad, entfernte Route und vorgeschaltete Regeln bleiben mögliche Erklärungen.
- Abbruch oder abgeschnittenes JSON: Die Zahl ist nicht zuverlässig bestimmt. Ein angezeigter Nullwert darf nicht als Beleg für null vorhandene Routen dienen.
Öffentliche Autoren sind nicht sämtliche Benutzerkonten
Die Standardroute /wp/v2/users kann ohne Anmeldung öffentliche Autorendaten liefern. Ohne die Berechtigung list_users begrenzt der Core die normale Auflistung auf Konten mit veröffentlichten Beiträgen in REST-sichtbaren Inhaltstypen. Filter und Erweiterungen können das Verhalten verändern. Außerdem sind Listen auf mehrere Ergebnisseiten verteilt: Eine Antwort ist nicht automatisch der vollständige Bestand.
Das öffentliche Feld slug entspricht dem URL-tauglichen user_nicename. Dieser Wert kann vom Anmeldenamen abweichen. Das separate Feld username gehört im Standardschema zum geschützten Bearbeitungskontext; Passwörter werden nicht zurückgegeben. Öffentliche Autorennamen sind deshalb keine offengelegte Passwortdatei und beweisen für sich keine Sicherheitslücke.
Öffentliche Kennungen können dennoch für unerwünschte Kontaktaufnahme oder gezielte Anmeldeversuche verwendet werden. Die Bewertung hängt von den tatsächlich ausgegebenen Daten und dem vorgesehenen Öffentlichkeitsgrad ab. Zugriffsschutz benötigt unabhängig davon wirksame Authentifizierung und passende Berechtigungen. Das Verbergen einer einzelnen Auflistung ersetzt diese Schutzmaßnahmen nicht.
Berechtigungen präzise benennen
WordPress prüft Fähigkeiten statt ausschließlich Rollennamen. Die Standardroute für Einstellungen prüft beispielsweise manage_options, die Pluginauflistung activate_plugins. Bei Themes hängen die Anforderungen auch von der Anfrage ab. Eine pauschale Aussage „alle diese Routen verlangen Administratorrechte“ ist deshalb zu ungenau.
Bei der Cookie-Authentifizierung ist die REST-Nonce ein zusätzlicher Prüfwert in der Anfrage. Der Wert schützt vor bestimmten Anfragen, die eine fremde Website über einen bereits angemeldeten Browser auslöst. Die Nonce ersetzt weder Anmeldung noch Berechtigungsprüfung. Andere unterstützte Verfahren, etwa Anwendungspasswörter über HTTPS, verwenden nicht dieselbe Cookie-/Nonce-Kombination. Eine Regel „jede zulässige REST-Anfrage braucht eine Nonce“ wäre falsch.
Grenzen des Routeninventars
Das verlinkte Routeninventar versucht /wp-json/ und unter bestimmten Fehlerbedingungen ?rest_route=/. Danach folgen zehn feste GET-Stichproben. Eine vollständige Suche aller API-Adressen oder ein Test sämtlicher Methoden findet nicht statt.
Die aktuelle Auswertung ordnet Stichproben allein nach dem HTTP-Status ein. Ein lokaler Test mit einer künstlichen HTML-Sperrseite und Status 200 ergibt deshalb die Kennzeichnung „offen“. Eine leere JSON-Liste erhält dieselbe Kennzeichnung. Der Begriff beschreibt hier keine nachgewiesene Offenlegung von Benutzerkonten.
Das Abruflimit beträgt 8 MiB. Bei abgeschnittenem Verzeichnis erscheint ein Hinweis, die numerische Routenzahl bleibt in der aktuellen Ausgabe aber null. Für Stichproben werden nur die ersten 4096 Inhaltsbytes weitergegeben; eine größere gültige JSON-Antwort kann dadurch unlesbar werden. Eine vollständige Benutzerzählung oder Pagination erfolgt nicht. Die Namensraumgruppierung verwendet zudem nur die ersten beiden Pfadsegmente, was längere Namensräume falsch zusammenfassen kann.
Die sechs lokalen Testfälle prüfen diese Auswertungsgrenzen mit künstlichen Antworten. Eine neue Rangliste fremder Installationen oder eine Sicherheitsprüfung der genannten Websites ergibt sich daraus nicht.
Ein ergänzender Artikel behandelt öffentliche Daten in der WordPress-REST-API.
Fragen und Antworten
Genügt das Abschalten der Benutzerroute zum Verbergen öffentlicher Autoren?
Nein. Autorenarchive, Verlinkungen und Sitemaps können weiterhin öffentliche Kennungen enthalten. Eine Einschränkung muss zum gewünschten Zugriffskonzept passen. Das vollständige Entfernen der Route kann außerdem Funktionen des Block-Editors oder anderer Anwendungen beeinträchtigen.
Kann ein öffentliches Verzeichnis bestehen bleiben, obwohl Daten geschützt sind?
Ja. Schnittstellenbeschreibung und Zugriff auf Daten sind verschiedene Ebenen. Das Verzeichnis erleichtert die Integration; die Berechtigung wird für die konkrete Operation geprüft.
Was eignet sich als belastbarer Prüfbeleg?
Der tatsächliche API-Einstieg, Zeitpunkt, Methode, Parameter, Authentifizierungszustand, Status und geprüfter Antwortinhalt gehören zusammen. Aussagen über Schreibschutz benötigen passende autorisierte Tests oder eine gezielte Codeprüfung. Eine einzelne anonyme GET-Antwort reicht dafür nicht.
Quellen
- WordPress: API-Adressen ermitteln
- WordPress: Eigene Endpunkte und Namensräume
- WordPress: Authentifizierungsverfahren
- WordPress: Benutzerschema
- WordPress: Öffentliche Benutzerlisten
- WordPress: Theme-Berechtigungen
- WordPress: Plugin-Berechtigungen
- WordPress: Berechtigungen für Einstellungen
- WordPress: Grenzen von Nonces
- WordPress: Aufteilung in Ergebnisseiten
- WordPress: Filter des öffentlichen Verzeichnisses
- WordPress: REST-API-Handbuch
- WordPress: Entwicklungsdokumentation


