Was ist xmlrpc.php, und wie deaktiviere ich XML-RPC in WordPress?
Von Eureka Studio · Aktualisiert
Kurze Antwort
Über XML-RPC können sich Apps per xmlrpc.php anmelden – eine eigene Tür, die das Verstecken von wp-login.php nicht schließt. Das Deaktivieren ist sicher, solange du nicht Jetpack oder die WordPress-App nutzt. Blockiere die Datei in der .htaccess, füge den Filter xmlrpc_enabled hinzu oder nutze ein Plugin, das den XML-RPC-Login schließt und Pingbacks behält. Teste es danach.
Schritte
1Schritt 1
Prüfen, ob xmlrpc.php antwortet
Ruf yoursite.com/xmlrpc.php auf. Siehst du „XML-RPC server accepts POST requests only.“, ist die Tür offen.
2Schritt 2
Verstehen, warum das wichtig ist
Der Angriffsflächen-Scan von Hushfort probiert es wirklich aus. Bei einer offenen Website meldet er, dass sich Passwörter unter Umgehung des versteckten Login-Pfads ausprobieren lassen und dass system.multicall eine einzige Anfrage Hunderte Versuche transportieren lässt.

3Schritt 3
Entscheiden, wie weit du sie schließt
Öffne Hushfort → Angriffsflächen-Härtung und schalte „Angriffsflächen-Härtung aktivieren“ ein. XML-RPC steht zunächst auf „Login deaktivieren, Pingbacks behalten (empfohlen)“, was für die meisten Websites passt. „Komplett deaktivieren“ ist am strengsten, stoppt aber Jetpack und die offizielle App. Klicke auf „Änderungen speichern“.

4Schritt 4
Testen, ob der Login über XML-RPC abgewiesen wird
Klicke zurück in der Übersicht auf „Erneut scannen“. Die XML-RPC-Zeile sollte jetzt lauten: „Login deaktiviert – Passwortversuche werden abgewiesen, Pingbacks funktionieren weiter.“

Warum das wichtig ist
XML-RPC ist eine alte Fernsteuerungsschnittstelle für WordPress. Bevor es die REST-API gab,
veröffentlichten Desktop-Editoren und mobile Apps darüber Beiträge. Sie ist noch immer in jeder
WordPress-Website enthalten, unter /xmlrpc.php, und nimmt noch immer bei jeder Anfrage einen
Benutzernamen und ein Passwort an. Wer XML-RPC in WordPress deaktiviert oder zumindest den
Login darüber schließt, schließt diese Tür.
Damit ist sie eine zweite Login-Tür. Das Verstecken von wp-login.php berührt sie nicht.
Login-Limit-Code, der nur das Login-Formular überwacht, sieht sie nicht. Und mit
system.multicall kann eine einzige HTTP-Anfrage Hunderte Passwortversuche transportieren. Ein
Limit, das Anfragen zählt, sieht einen Versuch, wo es fünfhundert waren.
Das ist keine Theorie. Wir haben diese Ebene gebaut, nachdem ein Shop weiterhin Passwortversuche über XML-RPC erhielt, während seine Login-Seite bereits versteckt war.
Nutzt du XML-RPC? Wahrscheinlich nicht, wenn nichts davon auf dich zutrifft:
- Du verbindest die Website mit Jetpack.
- Du veröffentlichst oder moderierst über die offizielle WordPress-App.
- Du nutzt ein älteres Desktop-Blogging-Werkzeug oder einen Dienst, der deinen WordPress-Benutzernamen und dein Passwort verlangt (statt eines Anwendungspassworts), um in deinem Namen zu posten.
- Du bist auf Pingbacks von anderen Blogs angewiesen.
Wenn du unsicher bist, schließe nur den Login und behalte die Pingbacks. Damit ist das Risiko des Passwort-Ratens weg, und die harmlosen Teile bleiben erhalten. Strenger werden kannst du später immer noch.
Häufige Fehler
- Den Login verstecken und es dabei belassen. Das Passwort-Raten wandert einfach zu
xmlrpc.php. - Die ganze Datei ungeprüft blockieren. Jetpack und die offizielle WordPress-App verbinden sich über XML-RPC. Wenn du sie nutzt, schließe nur die Login-Methoden oder teste sorgfältig.
- Einem Schalter ungetestet vertrauen. Manche Methoden lassen Teile von XML-RPC weiter antworten. Prüfe das Ergebnis immer mit einer echten Anfrage (siehe Schritt 4 oder prüfen, was deine Website preisgibt).
- Die Cache-Ebene vergessen. Blockiert schon eine CDN-Regel
xmlrpc.php, zeigt eine Einstellung auf WordPress-Ebene keine Wirkung. Das ist in Ordnung; wisse nur, welche Ebene die Arbeit macht.
Ohne Plugin
Option 1: der Filter xmlrpc_enabled. Füge das in ein kleines Must-use-Plugin
(wp-content/mu-plugins/no-xmlrpc-login.php) oder die functions.php deines Child-Themes ein:
<?php
add_filter( 'xmlrpc_enabled', '__return_false' );
Das deaktiviert XML-RPC-Methoden, die eine Anmeldung erfordern. Pingbacks funktionieren weiter,
weil sie keine brauchen. Für sich allein entfernt es system.multicall nicht, und die Datei
beantwortet weiterhin Anfragen. Um auch die Multicall-Methode zu entfernen:
<?php
add_filter( 'xmlrpc_methods', function ( $methods ) {
unset( $methods['system.multicall'] );
return $methods;
} );
Option 2: die Datei auf dem Server blockieren. Unter Apache in der .htaccess:
<Files xmlrpc.php>
Require all denied
</Files>
Unter Nginx: location = /xmlrpc.php { deny all; }. Das ist die strengste Option und kostet den
Server nichts, legt aber auch Pingbacks, Jetpack und die App lahm – und sie liegt außerhalb von
WordPress, gerät also beim Hosterwechsel leicht in Vergessenheit.
Wenn etwas schiefgeht
- Jetpack zeigt einen Verbindungsfehler. Jetpack braucht XML-RPC. Wechsle von „Komplett deaktivieren“ zu „Login deaktivieren, Pingbacks behalten“ oder entferne deine Serverregel.
- Die WordPress-App kann sich nicht anmelden. Dieselbe Ursache. Nutze entweder den Browser auf dem Handy oder erlaube den XML-RPC-Login und verlass dich auf Login-Limits plus Zwei-Faktor-Authentifizierung.
- Ein Publishing-Werkzeug postet nicht mehr. Prüfe, ob es XML-RPC nutzt. Die meisten modernen Werkzeuge sind auf die REST-API mit Anwendungspasswörtern umgestiegen.
Mit Hushfort
Die Hintertür-Sperre gehört zu Hushfort Pro. Der Angriffsflächen-Scan, der zeigt, ob XML-RPC offen ist, steckt in Hushfort Security, dem kostenlosen WordPress-Sicherheitsplugin.
Die Hintertür-Sperre ist Teil der Ebene Angriffsflächen-Härtung von Hushfort. Sie bietet dir vier Optionen:
- Login deaktivieren, Pingbacks behalten (empfohlen): Passwort-Raten über XML-RPC wird unmöglich, Pingbacks und Trackbacks funktionieren weiter. Passt gut zu Shops.
- Komplett deaktivieren: die strengste Option. Jetpack und die offizielle App können sich nicht verbinden.
- Nur system.multicall deaktivieren: schließt das Massen-Raten und lässt den Rest unberührt.
- Nicht ändern: der WordPress-Standard.
Der Angriffsflächen-Scan prüft das Ergebnis anschließend mit echten Anfragen, sodass du siehst,
was ein Außenstehender sieht. Der Lastschutz bepreist xmlrpc.php-Anfragen außerdem höher als
einen normalen Seitenaufruf, was verbleibenden Lärm ausbremst.
Häufige Fragen
Ist es sicher, XML-RPC in WordPress zu deaktivieren?
Versteckt das Verstecken der Login-Seite auch xmlrpc.php?
Was ist system.multicall?
Macht das Deaktivieren von XML-RPC Pingbacks kaputt?
Schaltet der Filter xmlrpc_enabled XML-RPC komplett ab?
Verwandte Anleitungen
Wie mache ich einen Sicherheitscheck, was meine WordPress-Website preisgibt?
WordPress-Sicherheitscheck wie ein Bot: Fünf Anfragen zeigen, ob Login, XML-RPC und Benutzernamen offen liegen – und wie du schließt, was du findest.
Zu den SchrittenWie kann ich in WordPress die Login-Versuche begrenzen?
Login-Versuche in WordPress begrenzen und Brute Force stoppen: IPs nach wenigen Fehlversuchen sperren. Gute Werte, Code ohne Plugin, typische Lücken.
Zu den SchrittenWie ändere ich die Login-URL von WordPress und verstecke wp-admin?
WordPress-Login-URL ändern und wp-admin verstecken, in fünf sicheren Schritten: erst testen, dann abmelden – und wissen, wie du wieder reinkommst.
Zu den Schritten
