Słowniczek

Czym jest XML-RPC?

8 lutego 2026 Zaktualizowano 19 kwi 2026

XML-RPC to jedna z tych funkcji WordPress, o której większość właścicieli witryn nigdy nie słyszała — a mimo to działa po cichu w tle praktycznie każdej instalacji WordPress od ponad dekady. Plik xmlrpc.php znajduje się w katalogu głównym i przyjmuje żądania z zewnątrz. Pierwotnie był to jedyny sposób na zdalne zarządzanie blogiem WordPress. Dziś jest to przede wszystkim zagrożenie bezpieczeństwa, które atakujący chętnie wykorzystują.

Co XML-RPC faktycznie robi

XML-RPC oznacza Extensible Markup Language – Remote Procedure Call. Mówiąc prosto, jest to sposób, w jaki zewnętrzne oprogramowanie może komunikować się z Twoją witryną WordPress przez HTTP. Aplikacja zewnętrzna wysyła odpowiednio sformatowane żądanie XML do twojawitryna.com/xmlrpc.php, WordPress je przetwarza i zwraca odpowiedź XML.

Przez ten interfejs klienci zewnętrzni mogą m.in.:

  • Tworzyć, edytować i usuwać wpisy oraz strony
  • Przesyłać obrazy i inne media
  • Moderować i zarządzać komentarzami
  • Pobierać konfigurację witryny i metadane
  • Wysyłać i odbierać pingbacki między blogami

Pomyśl o tym jak o prymitywnym API — funkcjonalnym, ale zaprojektowanym w czasach przed upowszechnieniem REST API.

Trochę historii

W połowie lat 2000 XML-RPC był Twoją jedyną opcją, jeśli chciałeś napisać wpis blogowy z telefonu lub aplikacji desktopowej takiej jak Windows Live Writer. WordPress zaadaptował MetaWeblog API i Blogger API, oba oparte na XML-RPC, aby umożliwić tym narzędziom komunikację z Twoją witryną.

W 2016 roku WordPress 4.7 wprowadził wbudowane REST API. Nagle pojawił się nowoczesny, ustandaryzowany sposób komunikacji z WordPress — taki, który używa JSON zamiast XML, obsługuje porządne uwierzytelnianie i jest znacznie łatwiejszy w użyciu. Od tego momentu XML-RPC stał się reliktem. Większość nowoczesnych wtyczek, aplikacji i integracji korzysta wyłącznie z REST API.

Dlaczego XML-RPC stanowi problem bezpieczeństwa

Plik jest domyślnie publicznie dostępny na każdej witrynie WordPress. Samo w sobie nie jest to idealne, ale prawdziwe problemy leżą głębiej:

  • Wzmocnienie brute-force — XML-RPC ma metodę zwaną system.multicall, która pozwala spakować setki żądań w jednym. Atakujący może przetestować 500 kombinacji nazwy użytkownika i hasła w jednym żądaniu HTTP. Wiele wtyczek zabezpieczających logowanie nawet tego nie zauważa, ponieważ monitorują tylko wp-login.php.
  • Nadużywanie pingbacków — Funkcja pingback może być wykorzystywana do ataków DDoS. Atakujący każe tysiącom witryn WordPress "pingować" docelowy serwer, zamieniając niewinne witryny w faktyczny botnet. Zdarzało się to wielokrotnie w praktyce.
  • Enumeracja nazw użytkownika — Nawet bez prawidłowych danych logowania odpowiedzi XML-RPC mogą potwierdzić istnienie nazwy użytkownika, dając atakującym połowę informacji, których potrzebują.
  • Niepotrzebna powierzchnia ataku — Każdy publicznie dostępny endpoint, który przyjmuje uwierzytelnianie, jest potencjalną drogą wejścia. Jeśli nie używasz XML-RPC, pozostawienie go otwartego jest jak niezamknięte drzwi, których nigdy się nie używa.

Kto naprawdę go jeszcze potrzebuje?

Szczera odpowiedź: praktycznie nikt. Jest kilka wyjątków:

  • Jetpack kiedyś mocno polegał na XML-RPC, ale przeszedł na REST API. Nowsze wersje Jetpack działają bez XML-RPC dla większości funkcji.
  • Bardzo stare aplikacje mobilne — Obecna mobilna aplikacja WordPress używa REST API. Tylko przestarzałe wersje sprzed 2016 roku nadal wymagają XML-RPC.
  • Przestarzałe narzędzia firm trzecich — Niektóre prastare przepisy IFTTT lub platformy publikacyjne mogą jeszcze go używać, ale dla wszystkich istnieją alternatywy.

Jeśli żadne z tych nie dotyczy Twojego przypadku, nie ma dobrego powodu, aby zostawiać XML-RPC włączone.

Jak wyłączyć XML-RPC

Najszybsza metoda to filtr w functions.php Twojego motywu lub w niestandardowej wtyczce:

add_filter('xmlrpc_enabled', '__return_false');

To wyłącza metody XML-RPC, ale plik wciąż zwraca odpowiedź. Aby całkowicie zablokować dostęp na poziomie serwera, dodaj to do swojego .htaccess:

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

Lub jeśli używasz Nginx:

location = /xmlrpc.php {
  deny all;
  return 403;
}

Wiele wtyczek bezpieczeństwa (Wordfence, iThemes Security, Sucuri) oferuje również przełącznik do wyłączenia XML-RPC jednym kliknięciem.

Jak InspectWP pomaga

InspectWP sprawdza, czy Twój endpoint xmlrpc.php jest osiągalny z zewnątrz. Jeśli odpowiada na żądania, raport oznacza to i wyjaśnia, dlaczego powinieneś rozważyć jego wyłączenie — zwłaszcza jeśli Twoja witryna nie ma uzasadnionego powodu, aby utrzymywać go aktywnym.

Sprawdź teraz swoją stronę WordPress

InspectWP analizuje Twoją stronę WordPress pod kątem bezpieczeństwa, problemów SEO, zgodności z RODO i wydajności — za darmo.

Przeanalizuj stronę za darmo