WordPress REST API: Was ist das & wie kann man sie deaktivieren?

Web-Entwicklung
WordPress REST API: Was ist das & wie kann man sie deaktivieren?

WordPress besitzt ab Werk eine REST API. Was das ist und wie man die Schnittstelle zur Optimierung der Sicherheit deaktivieren kann, haben wir in diesem Artikel heruntergeschrieben.

Was ist eine REST API?

Der Begriff REST steht für REpresentational State Transfer, API für Application Programming Interface. Einfach gesagt, handelt es sich dabei um eine Schnittstelle die zum Austausch von Informationen eingesetzt wird, die sich auf unterschiedlichen Systemen befinden. Eine REST API ist keineswegs eine „Erfindung“ aus dem Hause WordPress — vielmehr sind diese Schnittstellen überall im Internet zu finden bzw. im Einsatz. Seit 2015 ist eine REST API auch Teil des Funktionsumfangs von WordPress. Zuvor gab es die Schnittstelle lediglich als Plugin zum Nachrüsten. Mittels einer REST API können Informationen zwischen Systemen aufgeteilt und/oder abgefragt werden — und das ganz einfach per HTTP Request. Die Anwendungsszenarien einer solchen API sind somit äußerst vielfältig.

Die REST-API ist bei WordPress unter der URL beispiel-webseite.xyz/wp-json/ erreichbar.

  • das Auslesen der Artikel (Post Type posts) ist beispielsweise über folgende URL möglich: beispiel-webseite.xyz/wp-json/wp/v2/posts
  • das Auslesen der Nutzer auf folgendem Wege: beispiel-webseite.xyz/wp-json/wp/v2/users/
  • natürlich können noch viele weitere Daten abgefragt werden. Zusätzlich lassen sich die Daten mit verschiedenen Parametern anpassen, wie z.B. für die Anzahl der Beiträge pro Seite

Sollte man die REST API deaktivieren?

Zusätzliche Schnittstellen öffnen ein System in gewisser Weise und machen es damit gläsern — indirekt auch weniger sicher. Die REST API stellt hier leider keine Ausnahme dar. Wie dem Beispiel oben zu entnehmen ist, können mittels REST API beispielsweise die Benutzer einer WordPress-Installation abgefragt werden.

Wer sich einmal mit dem Thema WordPress Sicherheit beschäftigt hat, wird möglicherweise darauf geachtet haben, dass es keinen Standard-Benutzer namens „admin“ gibt, um mögliche Brute-Force-Attacken einzudämmen. Mit der REST API können alle erstellten Benutzer einer WordPress Installation kinderleicht abgefragt werden. Indirekt also ein Sicherheitsproblem, wenngleich man hier nicht den Teufel an die Wand malen sollte.

Wird die REST API nicht benötigt, kann man die Schnittstelle also getrost deaktivieren. Allerdings emfehlen wir nicht die vollständige Abschaltung, sondern lediglich eine Abschaltung der API für externe Zugriffe. Andernfalls kann es auch zu funktionalen Einschränkungen von z.B. Puglins kommen. Mittels Zugriffsschutz kann die REST API weiterhin aktiv bleiben und steht somit für nützliche Funktionen zur Verfügung.

WordPress REST API abschalten

Zugriffsschutz

Mittels dem nachstehenden Code-Snippet kann die REST-API mit einem Zugriffsschutz versehen werden. Konkret wird die API vollständig deaktiviert und kann nur aufgerufen werden, wenn man im WordPress-Backend angemeldet ist. Etwaige Backend-Funktionen, die in Abhängigkeit mit der REST-API stehen, dürften somit einwandfrei funktionieren. Der Code-Snippet muss in der functions.php-File des gegenwärtig verwendeten Themes integriert werden. Alternativ kann man den Code natürlich in ein eigenes, kleines Plugin auslagern.

via Plugin und Whitelist

Bildquelle: WordPress.org

Das kostenlose Plugin „Disable REST API“ deaktiviert die REST API von WordPress im Handumdrehen. Einfach das Plugin über das offizielle Plugin-Verzeichnis installieren — fertig. Ein wesentlicher Vorteil des Plugins ist, dass es eine über das Backend pflegbare Whitelist gibt. Sollte es bei der Abschaltung Probleme mit Funktionen der Webseite geben, können entsprechende Endpunkte der REST API wieder freigegeben werden.



Sie benötigen eine WordPress Agentur? Wir stehen als Ihre Experten zur Verfügung. Treten Sie mit uns in Kontakt und vereinbaren Sie ein unverbindliches Beratungsgespräch.

Schreibe einen Kommentar

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