...

Co to jest i jak wyłączyć XML-RPC

jak wyłączyć XML-RPC

XML-RPC to stary protokół WordPress standaryzujący komunikację pomiędzy różnymi systemami zewnętrznymi a samym WordPress. Miał za zadanie zezwalać na zarządzanie stroną poprzez inne platformy blogowe lub aplikacje. Sam protokół ma jednak swojego następcę w postaci REST API a plik xmlrpc.php zapewniający wdrożenie XML-RPC do WordPress ma swoje wady. W tym wpisie opowiem dokładniej jak wyłączyć XML-RPC w WordPress i tym samym podnieść bezpieczeństwo Twojej strony internetowej lub sklepu.

Czym jest plik xmlrpc.php

XML-RPC jako protokół komunikacji z WordPress został zaimplementowany w 2003 roku. Zaprojektowany został jednak dużo wcześniej. Wykorzystuje HTTP do przesyłu danych zakodowanych w XML. Kod źródłowy zapisany jest w pliku xmlrpc.php w katalogu głównym WordPress. I pomimo tego, że jest mocno przestarzały (ponad 20 lat) to nie został jeszcze usunięty z natywnych paczek instalacyjnych.

Co więcej, XML-RPC był początkowo domyślnie wyłączony. Dopiero od wersji WordPress 3.5 został domyślnie włączony przy każdej instalacji i tak pozostało do dziś. Wszystko po to, aby można było zarządzać WordPressem za pomocą dedykowanej aplikacji mobilnej. Tak WordPress ma również aplikację. Cała komunikacja odbywa się właśnie przy pomocy pliku xmlrpc.php.

Samo XML-RPC to nie tylko obsługa aplikacji mobilnej. Pozwala na komunikację z innymi platformami blogowymi zezwalając na trackbacki i pingbacki a także wspiera wtyczkę Jetpack do współpracy z serwisem wordpress.com. Ale od kiedy WordPress posiada wbudowany REST API, to używanie protokołu XML-RPC jest niepraktyczne. REST API oferuje większe bezpieczeństwo i dużo większą kompatybilność z innymi serwisami.

W związku z powyższym, warto abyś wyłączył nieużywany plik xmlrpc.php.

Dlaczego warto wyłączyć xmlrpc.php

Chodzi tu głównie o bezpieczeństwo. Protokół XML-RPC pozwala hakerom zdalnie bombardować WordPress tysiącami zapytań z kombinacjami loginów i haseł. To tzw. atak brute force. Służą do tego specjalne narzędzia, roboty atakujące setki stron jednocześnie. Roboty te po prostu zgadują wszystkie losowe kombinacje loginów i haseł. Jeśli masz przewidywalny login do zaplecza, np. admin oraz słabe hasło to prędzej czy później włamanie masz gwarantowane. 

Bombardowanie pliku xmlrpc.php milionami zapytań to także świetny sposób na ataki typu DDoS. Charakteryzują się tak dużym ruchem na stronie i ilością zapytań do bazy danych, że serwer nie nadąża odpowiadać i strona przechodzi w tryb offline. 

Różne oprogramowania potrafią w bardzo prosty sposób sprawdzić, czy Twój WordPress posiada włączony XML-RPC. Jeśli tak jest, zaczynają atak.

Jak wyłączyć XML-RPC w WordPress?

Sposobów wyłączenia XML-RPC jest kilka: modyfikując plik .htaccess, functions.php lub za pomocą wtyczki. Sprawdźmy po kolei:

Wyłącz XML-RPC za pomocą .htaccess

Jeśli posiadasz stronę na typowym hostingu Apache (większość hostingów współdzielonych w Polsce), to zmodyfikuj plik .htaccess w katalogu głównym WordPress. Po prostu wklej poniższy kod na początku pliku i zapisz zmiany.

<Files xmlrpc.php>
Order Allow,Deny
Deny from all
</Files>

Wyłącz XML-RPC za pomocą filtra

Jeśli posiadasz motyw potomny (Child Theme), to w pliku functions.php dopisz jedną linijkę z następującym filtrem:

add_filter( 'xmlrpc_enabled', '__return_false' );

Wyłącz XML-RPC za pomocą własnej wtyczki

Jeszcze lepszym rozwiązaniem jest napisanie własnej wtyczki. O tym jak napisać wtyczkę również napisałem artykuł na blogu. To naprawdę bardzo proste. Po prostu wklej tam taki sam kod. Plusem własnej wtyczki, jest to, że możesz tam umieścić więcej przydatnego kodu.

add_filter( 'xmlrpc_enabled', '__return_false' );

Wyłącz XML-RPC za pomocą snipetu

Jeśli nie chcesz tworzyć własnej wtyczki ani modyfikować functions.php to zawsze możesz stworzyć nowy snipet. Użyj do tego dowolnej wtyczki z repozytorium WordPress. Ja niezmiennie polecam Code Snippets.

Code Snippets

Wyłącz XML-RPC za pomocą wtyczki z repozytorium

Ostatecznie możesz zajrzeć do darmowego repozytorium WordPress w poszukiwaniu darmowej wtyczki napisanej przez kogoś innego. Z pewnością znajdziesz więcej niż jedną 😉

Dlaczego XML-RPC nie został jeszcze usunięty z WordPress?

Skoro przestarzały XML-RPC jest taki zły, to dlaczego jeszcze go nie usunięto z WordPress? Odpowiedź jest banalna: chodzi o kompatybilność wsteczną. Część starych, zewnętrznych systemów zdalnego zarządzania WordPress nie wspiera jeszcze REST API, więc musi komunikować się za pomocą xmlrpc.php. Choć w mojej ocenie XML-RPC powinno zostać usunięte lub co najmniej domyślnie wyłączone w nowych instalacjach. Dlaczego tak nie jest? Nie wiem. Ale zdaje mi się, że jeśli ktoś będzie chciał włączyć XML-RPC w swoim WordPress to sobie włączy. Nie ma potrzeby narażać miliony stron (i tysiące nowych powstających codziennie) na niepotrzebne ataki tylko dla garstki użytkowników starych rozwiązań. A Ty co myślisz na ten temat? Masz jeszcze jakieś propozycje jak wyłączyć XML-RPC? Czy powinien zostać domyślnie włączony?

Szukasz eksperta do opieki nad Twoją stroną internetową?

ZAPISZ SIĘ DO NEWSLETTERA!

Bądź na bieżąco! W newsletterze będziesz otrzymywać m.in. informacje o nowych wpisach na blogu, poradnikach na YouTube, e-bookach oraz ważnych wydarzeniach ze świata WordPress. Wysyłam jedynie wartościowe treści.

Wyklikane logo emblem

NAPISZ DO MNIE

Zamów usługę

Wypełnij formularz kontaktowy jako pierwszy krok do rozwoju Twojego biznesu. Nasz jakiej usługi potrzebujesz a przygotuję ofertę dopasowaną specjalnie do do Twoich potrzeb. Nie zwlekaj!

Seraphinite AcceleratorOptimized by Seraphinite Accelerator
Turns on site high speed to be attractive for people and search engines.