Die XML-RPC WordPress-Spezifikation wurde entwickelt, um die Kommunikation zwischen verschiedenen Systemen zu standardisieren, was bedeutet, dass Anwendungen außerhalb von WordPress (wie z.B. andere Blogging-Plattformen und Desktop-Clients) mit WordPress interagieren können.

Diese Spezifikation war von Anfang an ein Teil von WordPress und hat einen sehr nützlichen Job gemacht. Ohne sie wäre WordPress in seinem eigenen Silo, getrennt vom Rest des Internets, gewesen.

Allerdings hat xmlrpc.php auch seine Schattenseiten. Es kann Schwachstellen in deine WordPress Webseite einführen und wurde nun durch die WordPress REST API ersetzt, die eine viel bessere Arbeit leistet, WordPress für andere Anwendungen zu öffnen.

In diesem Beitrag erklären wir, was xmlrpc.php ist, warum du es deaktivieren solltest und helfen dir zu erkennen, ob es auf deiner WordPress Webseite läuft.

Bereit? Lass uns loslegen!

Was ist xmlrpc.php?

XML-RPC ist eine Spezifikation, die die Kommunikation zwischen WordPress und anderen Systemen ermöglicht. Dies wurde erreicht, indem diese Kommunikation standardisiert wurde, indem HTTP als Transportmechanismus und XML als Kodierungsmechanismus verwendet wurde.

XML-RPC ist älter als WordPress: es war bereits in der b2-Blogging-Software enthalten, die 2003 zur Erstellung von WordPress verwendet wurde. Der Code hinter diesem System ist in einer Datei namens xmlrpc.php im Hauptverzeichnis der Webseite gespeichert. Und sie ist immer noch da, auch wenn XML-RPC weitgehend veraltet ist.

In den frühen Versionen von WordPress war XML-RPC standardmäßig deaktiviert. Aber seit Version 3.5 ist es standardmäßig aktiviert. Der Hauptgrund dafür war, dass die WordPress Mobile App mit deiner WordPress-Installation kommunizieren kann.

Wenn du die WordPress Mobile App vor Version 3.5 benutzt hast, erinnerst du dich vielleicht daran, dass du XML-RPC auf deiner Webseite aktivieren musstest, damit die App Inhalte posten kann. Das lag daran, dass die App nicht WordPress selbst ausgeführt hat, sondern eine separate App war, die über xmlrpc.php mit deiner WordPress Webseite kommunizierte.

Aber es war nicht nur die mobile Anwendung, für die XML-RPC verwendet wurde: es wurde auch verwendet, um die Kommunikation zwischen WordPress und anderen Blogging-Plattformen zu ermöglichen, es ermöglichte Trackbacks und Pingbacks, und es unterstützte das Jetpack-Plugin, das eine selbst gehostete WordPress Webseite mit WordPress.com verbindet.

Aber seit die REST API in den WordPress Core integriert wurde, wird die xmlrpc.php Datei nicht mehr für diese Kommunikation verwendet. Stattdessen wird die REST-API für die Kommunikation mit der WordPress Mobile-App, mit Desktop-Clients, mit anderen Blogging-Plattformen, mit WordPress.com (für das Jetpack-Plugin) und mit anderen Systemen und Diensten verwendet. Die Bandbreite der Systeme, mit denen die REST-API interagieren kann, ist viel größer als die von xmlrpc.php erlaubte. Außerdem gibt es viel mehr Flexibilität.

Da die REST API XML-RPC abgelöst hat, solltest du xmlrpc.php auf deiner Webseite jetzt deaktivieren. Schauen wir mal warum.

Warum du xmlrpc.php deaktivieren solltest

Der Hauptgrund, warum du xmlrpc.php auf deiner WordPress Webseite deaktivieren solltest, ist, dass es Sicherheitslücken einführt und das Ziel von Angriffen sein kann.

Jetzt, da XML-RPC nicht mehr benötigt wird, um außerhalb von WordPress zu kommunizieren, gibt es keinen Grund mehr, es aktiv zu lassen. Deshalb ist es ratsam, deine Webseite sicherer zu machen, indem du sie deaktivierst.

“Wenn xmlrpc.php eine Sicherheitslücke ist und nicht mehr funktioniert, warum wurde es dann nicht ganz aus WordPress entfernt?”

Der Grund dafür ist, dass eines der Hauptmerkmale von WordPress immer die Abwärtskompatibilität sein wird. Wenn du deine Webseite gut verwaltest, wirst du wissen, dass es wichtig ist, WordPress auf dem neuesten Stand zu halten, ebenso wie alle Plugins oder Themes.

Aber es wird immer Webseitenbesitzer geben, die nicht willens oder nicht in der Lage sind, ihre Version von WordPress zu aktualisieren. Wenn sie eine Version verwenden, die älter als die REST-API ist, benötigen sie trotzdem Zugang zu xmlrpc.php.

Schauen wir uns die spezifischen Schwachstellen genauer an.

Kinsta blockiert XML-RPC standardmäßig. Mehr dazu findest du in unseren FAQs. Wenn du es für eine Anwendung aktivieren möchtest, wende dich bitte an den Support.

DDoS-Angriffe über XML-RPC-Pingbacks

Eine der Funktionen, die xmlrpc.php aktiviert hat, waren Pingbacks und Trackbacks. Dies sind die Benachrichtigungen, die in den Kommentaren auf deiner Webseite erscheinen, wenn ein anderer Blog oder eine andere Webseite auf deinen Inhalt verlinkt.

Die XML-RPC-Spezifikation war es, die diese Kommunikation möglich machte, aber das wurde durch die REST API ersetzt (wie wir bereits gesehen haben).

Wenn XML-RPC auf deiner Webseite aktiviert ist, könnte ein Hacker möglicherweise eine DDoS-Attacke auf deine Webseite starten, indem er xmlrpc.php ausnutzt, um in kurzer Zeit eine große Anzahl von Pingbacks an deine Webseite zu senden. Dies könnte deinen Server überlasten und deine Webseite außer Gefecht setzen.

Brute Force Angriffe über XML-RPC

Jedes mal wenn xmlrpc.php eine Anfrage macht, sendet es den Benutzernamen und das Passwort zur Authentifizierung. Dies stellt eine erhebliche Sicherheitslücke dar und ist etwas, was die REST-API nicht tut. Tatsächlich verwendet die REST-API OAuth, das Token zur Authentifizierung anstelle von Benutzernamen oder Passwörtern sendet.

Da xmlrpc.php bei jeder Anfrage Authentifizierungsinformationen sendet, könnten Hacker diese Informationen nutzen, um zu versuchen, auf deine Webseite zuzugreifen. Eine Brute-Force-Attacke wie diese könnte ihnen erlauben, Inhalte einzufügen, Code zu löschen oder deine Datenbank zu beschädigen.

Wenn ein Angreifer genug Anfragen an deine Webseite sendet, jede mit einem anderen Benutzernamen- und Passwort-Paar, besteht die Möglichkeit, dass er schließlich auf die richtige trifft, um Zugang zu deiner Webseite zu erhalten.

Aus diesem Grund solltest du, wenn du eine aktuelle Version von WordPress verwendest, die die REST-API zur Kommunikation mit externen Systemen nutzt, xmlrpc.php deaktivieren. Sie wird nicht benötigt und könnte deine Webseite angreifbar machen.

Läuft xmlrpc.php auf deiner WordPress Webseite?

Das erste, was du als erstes brauchst, ist herauszufinden, ob xmlrpc.php auf deiner WordPress Webseite läuft.

Dies ist kein einfacher Fall der Überprüfung, ob die Datei vorhanden ist: sie ist Teil jeder WordPress-Installation und wird auch dann vorhanden sein, wenn XML-RPC deaktiviert ist.

Um zu überprüfen, ob xmlrpc.php auf deiner Seite aktiviert ist, verwende die XML-RPC Validator Web App. Sie prüft deine Seite und sagt dir, ob xmlrpc.php aktiviert ist.

XML-RPC Validator Web App website
XML-RPC Validator Web App

Dies zeigt, dass xmlrpc.php auf kinsta.com deaktiviert wurde. Wenn du also die Überprüfung durchführst und feststellst, dass xmlrpc.php auf deiner Webseite immer noch aktiviert ist, wie schaltest du es dann aus?

Wie man xmlrpc.php deaktiviert

Es gibt drei Möglichkeiten, xmlrpc.php zu deaktivieren:

Schauen wir uns jede einzeln an.

Wie man xmlrpc.php mit einem Plugin deaktiviert

Ein Plugin zu installieren, um xmlrpc.php zu deaktivieren, ist der einfachste Weg, dies zu tun. Das Disable XML-RPC-Plugin wird es komplett deaktivieren. Hier siehst du, wie du es benutzt.

Mein Ausgangspunkt ist meine eigene Webseite, auf der xmlrpc.php aktiviert ist. Du kannst dies über den Check sehen, den ich gemacht habe:

Rachel McCollin Webseite - XML-RPC-Prüfung
Rachel McCollin Webseite – XML-RPC-Prüfung

Installiere das Plugin über deinen Pluginsbildschirm im WordPress-Admin und aktiviere es.

Du musst nichts weiter tun: das Aktivieren des Plugins führt dazu, dass XML-RPC deaktiviert wird. Wenn ich nun einen Check auf meiner Webseite durchführe, erhalte ich ein anderes Ergebnis:

Rachel McCollin Webseite - zweiter XML-RPC-Check
Rachel McCollin Webseite – zweiter XML-RPC-Check

So einfach ist das!

Deaktiviere XML-RPC-Pingbacks mit einem Plugin

Aber was ist, wenn du einige Aspekte von xmlrpc.php deaktivieren willst und andere nicht? Mit dem Disable XML-RPC Pingback-Plugin kannst du nur die Pingback-Funktionalität deaktivieren, was bedeutet, dass du immer noch Zugang zu anderen Funktionen von XML-RPC hast, wenn du sie benötigst.

Das Plugin funktioniert auf die gleiche Weise wie das Disable XML-RPC-Plugin: einfach installieren, aktivieren und es wird funktionieren.

XML-RPC und REST API-Aktivierung mit einem Plugin konfigurieren

Wenn du genauere Kontrolle darüber haben möchtest, wie sowohl xmlrpc.php als auch die REST API auf deiner Webseite konfiguriert sind, kannst du das REST XML-RPC Data Checker Plugin installieren.

Wenn du dieses Plugin installiert und aktiviert hast, gehe zu Einstellungen > REST XML-RPC Data Checker und klicke auf den XML-RPC Reiter.

REST XML-RPC Data Checker
REST XML-RPC Data Checker

Damit kannst du genau konfigurieren, welche Aspekte von xmlrpc.php auf deiner Webseite aktiv sind.

Alternativ kannst du sie auch einfach ganz ausschalten. Und wenn du auch die Kontrolle über die REST-API haben willst, gibt dir das Plugin einen weiteren Tab dafür.

Wie man xmlrpc.php ohne Plugin deaktiviert

Wenn du lieber kein weiteres Plugin auf deiner Webseite installieren möchtest, kannst du xmlrpc.php deaktivieren, indem du etwas Code in einem Filter oder in deiner .htaccess-Datei hinzufügst. Schauen wir uns beide Methoden an.

Deaktiviere xmlrpc.php über einen Filter

Eine Option hier ist, den Filter xmlrpc_enabled zu benutzen, um xmlrpc.php zu deaktivieren. Füge diese Funktion zu einem Plugin hinzu und aktiviere sie auf deiner Webseite:

add_filter( 'xmlrpc_enabled', '__return_false' );

Du könntest diese Funktion in deine Theme-Functions-Datei einfügen, aber es ist besser, ein Plugin zu schreiben.

Die andere Option hat mit dem Editieren deiner .htaccess-Datei zu tun, die bei Hosting-Providern, die Apache verwenden, verfügbar ist, indem du dich per FTP oder cPanel mit dem Server deiner Webseite verbindest.

Deaktiviere xmlrpc.php über die .htacess-Datei

Füge diesen Code in deine .htaccess-Datei ein:

<Files "xmlrpc.php">
  Require all denied
</Files>

Stelle sicher, dass du vorher eine Kopie der alten Datei anfertigst, für den Fall, dass du Probleme bekommst.

Lass deinen Hosting-Provider xmlrpc.php deaktivieren

Alternativ bieten dir einige Hosting-Provider an, xmlrpc.php zu deaktivieren, wenn ein Angriff entdeckt wird.

Dies wird einen 403-Fehler erzeugen und den Angriff in seinen Spuren stoppen.

Bei Kinsta musst du dir keine Sorgen machen, das ist bereits blockiert. Wende dich bei Problemen an den Support.

Wenn du das selbst machst, ist es am besten, eine der oben genannten Methoden zu verwenden. Aber bevor du das tust, erkundige dich immer zuerst bei deinem Hosting-Provider.

Wann braucht ihr xmlrpc.php zu aktivieren?

Es mag einige Gelegenheiten geben, bei denen du xmlrpc.php auf deiner WordPress Webseite aktivieren musst oder wenn du es nicht komplett deaktivieren solltest.

Diese sind:

  • Du verwendest nicht die REST API (nicht empfohlen, aber in manchen Situationen notwendig), aber du benötigst die Kommunikation zwischen deiner WordPress Webseite und anderen Systemen.
  • Du kannst WordPress nicht auf Version 4.4 oder höher updaten, also hast du keinen Zugriff auf die REST API. Dies könnte an Einschränkungen in deinem Hosting-Setup liegen (in diesem Fall würde ich den Hosting-Provider wechseln) oder an der Inkompatibilität von Theme oder Plugins (in diesem Fall würde ich diese ersetzen oder aktualisieren).
  • Du arbeitest mit einer externen Anwendung, die nicht auf die WP REST API zugreifen kann, aber auf XML-RPC zugreifen kann (auf lange Sicht würde ich empfehlen, diese Anwendung zu aktualisieren oder auf eine REST-kompatible Anwendung zu wechseln).

Das ist alles! Nichts davon sind besonders gute Gründe dafür, die XML-RPC-Spezifikation eingeschaltet zu lassen.

Der einzige Grund, warum sie noch in WordPress ist, ist die Abwärtskompatibilität und du würdest sie nur benutzen, wenn du mit veralteten Systemen arbeitest. Für jeden, der seine Webseiten auf dem neuesten Stand halten und mit der neuesten Technologie arbeiten möchte, ist das Deaktivieren von xmlrpc.php der richtige Weg.

Zusammenfassung

Die XML-RPC-Spezifikation wurde schon vor der Entstehung von WordPress entwickelt, um WordPress die Kommunikation mit externen Systemen und Anwendungen zu ermöglichen. Sie hat inhärente Sicherheitslücken und könnte deine Webseite anfällig für Angriffe machen.

Jetzt, da die REST API deine Webseite mit anderen Anwendungen kommunizieren lässt, kannst du xmlrpc.php sicher deaktivieren. Wenn du die obigen Schritte befolgst, verbesserst du die Sicherheit deiner Webseite, indem du sie deaktivierst.

Rachel McCollin

Rachel McCollin has been helping people build websites with WordPress since 2010. She's a huge fan of self-hosted WordPress and wants to help as many people as possible create an awesome website with it.