WordPress REST-API verstehen, einsetzen und deaktivieren | Beispiele | Sicherheit

Eine sogenannte „REST API“ ist eine standardisierte Methode, die viele Anwendungen im Internet zur Kommunikation zwischen Server und Client nutzen. Der Begriff REST steht für »Representational State Transfer«.

Was macht die WordPress Rest-API?

Die WordPress-REST-API ist eine Schnittstelle für Anwendungen, um mit der WordPress-Site zu interagieren, indem Daten als JSON -Objekte (JavaScript Object Notation) gesendet und empfangen werden. Die WordPress REST API ist eine Grundlage des WordPress-Blockeditors (Gutenberg). Auch viele WordPress-Plugins nutzen die REST-API.

Die WordPress REST API ist eine Sammlung von Code, der es anderen Programmen ermöglicht, mit WordPress zu kommunizieren und dass diese Systeme sich gegenseitig verstehen. Eine Website von Drittanbietern oder eine mobile Anwendung kann damit auf deine WordPress-Datenbank zugreifen, Daten abrufen und ggf. Daten hinzufügen.

Bevor die WordPress REST API im Dezember 2016 als Teil des Cores von WP Version 4.7 veröffentlicht wurde, war sie als Plugin verfügbar.


Beispiele

https://www.meine-domain.de/wp-json/

Dieser Aufruf per REST-API erzeugt im Browser eine Ausgabe aller wichtigen Angaben über deine WordPress-Website. Die Informationen liegen nackt vor und können von Fremden zum Guten oder Bösen verwendet werden.

https://www.meine-domain.de/wp-json/
https://www.meine-domain.de/wp-json/wp/v2/posts

Die Abfrage gibt alle Posts inkl. eventuell vorliegenden Versionen, Links, Medieninhalten, Verfasser und anderen Daten aus. Diese Abfrage kann bösen Buben als Ausgangspunkt für ihren Content-Raubzug dienen. Alle deine Inhalte stehen so Dritten frei zur Verfügung – wenn die WordPress Rest-API aktiviert ist.

https://www.meine-domain.de/wp-json/wp/v2/posts/443/

Indem Du die POST-ID anhängst, erhältst du die kompletten Daten des fremden Beitrags präsentiert. Sogar die Zählpixel der VG-Wort werden veröffentlicht. Zwar stehen sie offen im Quellcode, doch dank der WordPress REST-API kann ein kleines, selbst geschriebenes PHP-Script den Inhalt einer kompletten WordPress Website auslesen, auswerten und verwerten.

Wenn du auf den folgenden Link klickst: „alltag-0815.de/wp-json/wp/v2/posts/9980/“ , stellt die Wortdpress REST-API dir alle Daten zum Post mit der ID 9980 zur Verfügung.

Verwerten? KI-gestützte Tools wie „The best Spinner“ schreiben automatisch den gestohlenen Text leicht um, präsentieren ihn als ihr Eigentum und nehmen dir am Ende vielleicht auch noch potenzielle Besucher weg – weil diese automatisch generierten Webseiten bei Google durchaus besser ranken können als deine eigene Website.

Das Gute: Die WordPress REST-API kann deaktiviert werden.

Das Schlechte: Du musst auf den Gutenberg Blockeditor verzichten.


So deaktivierst Du die Rest-API

Die REST API von WordPress kann deaktiviert werden, wenn sie nicht benötigt wird. Sie mag nicht stören, kann aber zu einem Übel werden, wenn fremde Applikationen mit dieser REST-API deinen Content auslesen, übernehmen, verändern und als ihr Eigentum vermarkten.

Die meisten haben mit Programmierung nicht wirklich viel am Hut. Viele andere jedoch ziehen direkte Eingriffe in den Code einer Software vor. Beides hat seine Berechtigung für die jeweilige Zielgruppe. Ein Journalist will beispielsweise nicht unbedingt ein Programmierer werden, nur um eine Funktion zu deaktivieren. Und jemand, der sich mit der Programmiersprache PHP auskennt, möchte sein WordPress nicht mit noch mehr (für ihn) unnötigen Plugins „zumüllen“.

WordPress REST-API mit Plugin deaktivieren

Das WordPress-Plugin „Disable WP REST API“ sperrt die REST-API für Zugriff die Daten der Website. Nur eingeloggte User können die WordPress REST-API nutzen, beispielsweise zum Schreiben von Beiträgen mit dem Gutenberg Blockeditor. Doch es gibt noch eine Reihe weiterer Plugins, die diese Aufgabe mehr oder weniger umfangreich realisieren.

WordPress REST-API manuell deaktivieren

Wer sowieso oft einiges im Programmier-Code seiner WordPress-Installation ändern, hat sicherlich genügend Erfahrungen und Routine, um derartige Aufgaben auszuführen.

WP REST-API vollständig deaktivieren

Wenn Du die API nicht benötigst, den Gutenberg-Editor nicht nutzt, trägst du folgenden Code in die functions.php ein.

add_filter('rest_enabled', '_return_false');
add_filter('rest_jsonp_enabled', '_return_false');

WP REST-API für angemeldete USER belassen

add_filter('rest_authentication_errors', function($result) {
  if (!is_user_logged_in()) {
    return new WP_Error('rest_API_cannot_access', array( 'status' => rest_authorization_required_code()));
    return $result;
  }
});

Nur wenn jemand auf der Website als User eingeloggt ist, kann er die WordPress REST-API nutzen. Mit diesem PHP-Code, den du in die functions.php einträgst, sperrst du alle Content-Diebe aus.

Wenn Du es kompliziert magst, kannst du die WordPress REST-API generell sperren, für einzelne Anwendungen/Plugins aber zulassen. Nutzte dafür am besten ein Plugin.

Was nun? Fazit

Die WordPress REST-API wird von ihren Machern als die „Zukunft“ von WordPress vermarktet. Totale Freiheit der Daten im Internet. Aber möchte der fleißige Blogger wirklich seinen Unique-Content, für den er viele Tage aufbrachte, automatischen Programmen zum Fraß vorwerfen? Ich recherchiere für einen Beitrag oft viele Tage lang. Und dann kommt ein Bot mit einem Spinner im Schlepptau und assimiliert in wenigen Sekunden meinen Betrag, der mich unter Umständen viele Tage Arbeitszeit kostete?

Rubrik (deutsch): Tutorial, Anleitung, Fehler, Probleme, Hilfe