Endpoint XML-RPC WordPressa jest aktywny
Co to jest
/xmlrpc.php to stary endpoint WordPressa służący do zdalnego publikowania (Windows Live Writer, Jetpack, aplikacje mobilne WP). W roku 2026 nie korzysta z niego 99% witryn — WordPress komunikuje się dziś przez REST API. Endpoint jest jednak nadal domyślnie włączony, więc jeśli aktywnie go nie wyłączysz, pozostaje publicznie dostępny.
Dlaczego to problem
XML-RPC niesie ze sobą dwa konkretne zagrożenia:
- Amplifikacja ataków brute-force. Metoda
system.multicallpotrafi w jednym żądaniu HTTP przetestować dziesiątki, a nawet setki kombinacji nazwa+hasło. W ten sposób atakujący omija fail2ban oraz rate-limit, ponieważ z perspektywy serwera widoczne jest jedno żądanie, a nie 200. - Amplifikacja ataków DDoS przez pingback. Metoda
pingback.pingzmusza Twój WordPress do wysłania żądania HTTP na dowolny adres URL — atakujący może za Twoim pośrednictwem spróbować przeprowadzić DDoS na stronę trzecią.
Jak to naprawić
Sposób 1 — wyłączenie filtrem (szybkie)
Do functions.php lub do wtyczki dedykowanej witrynie:
add_filter('xmlrpc_enabled', '__return_false');To wyłącza uwierzytelnianie XML-RPC. Endpoint nadal odpowiada, ale ataki brute-force oraz pingback zakończą się niepowodzeniem.
Sposób 2 — zablokowanie na poziomie serwera WWW (lepsze)
nginx:
location = /xmlrpc.php {
deny all;
return 403;
}Apache (.htaccess):
<Files xmlrpc.php>
Require all denied
</Files>Dzięki temu WordPress w ogóle nie otrzyma żądania — mniejsze obciążenie, brak uruchamiania PHP, lepsza skalowalność.
Sposób 3 — wtyczka
Jeśli nie czujesz się komfortowo z edycją plików konfiguracyjnych, wtyczka Disable XML-RPC wyłączy go jednym kliknięciem.
Weryfikacja
curl -I https://example.cz/xmlrpc.php
# powinien zwrócić 403 (sposób 2) lub 405 Method Not Allowed (sposób 1)Co może się zepsuć
Jeśli korzystasz z aplikacji mobilnej WP lub z Jetpacka w trybie „classic”, utracisz zdalne publikowanie. Jetpack od 2018 roku ma fallback na REST API, więc w większości przypadków nikt tego nie zauważy.