Un ghid complet despre xmlrpc.php în WordPress (ce este, riscuri de securitate, cum să îl dezactivați)

Publicat: 2020-07-06

Specificația XML-RPC WordPress a fost dezvoltată pentru a standardiza comunicarea între diferite sisteme, ceea ce înseamnă că aplicațiile din afara WordPress (cum ar fi alte platforme de blogging și clienți desktop) ar putea interacționa cu WordPress.

Această specificație a făcut parte din WordPress încă de la început și a făcut o treabă foarte utilă. Fără el, WordPress ar fi fost în propriul siloz, separat de restul internetului.

Cu toate acestea, xmlrpc.php are dezavantajele sale. Poate introduce vulnerabilități site-ului dvs. WordPress și acum a fost înlocuit de API-ul REST WordPress, care face o treabă mult mai bună de a deschide WordPress către alte aplicații.

În această postare, vă vom explica ce este xmlrpc.php, de ce ar trebui să-l dezactivați și vă vom ajuta să identificați dacă rulează pe site-ul dvs. WordPress.

Gata? Să ne scufundăm!

Ce este xmlrpc.php?

XML-RPC este o specificație care permite comunicarea între WordPress și alte sisteme. A făcut acest lucru prin standardizarea acelor comunicații, folosind HTTP ca mecanism de transport și XML ca mecanism de codare.

XML-RPC este anterior WordPress: a fost prezent în software-ul de blogging b2, care a fost bifurcat pentru a crea WordPress încă din 2003. Codul din spatele sistemului este stocat într-un fișier numit xmlrpc.php , în directorul rădăcină al site-ului. Și este încă acolo, chiar dacă XML-RPC este în mare parte depășit.

În versiunile inițiale ale WordPress, XML-RPC a fost dezactivat în mod implicit. Dar de la versiunea 3.5, a fost activat implicit. Motivul principal pentru aceasta a fost acela de a permite aplicației mobile WordPress să vorbească cu instalarea dvs. WordPress.

Dacă ați folosit aplicația mobilă WordPress înainte de versiunea 3.5, vă amintiți că ați trebuit să activați XML-RPC pe site-ul dvs. pentru ca aplicația să poată posta conținut. Acest lucru se datora faptului că aplicația nu rula WordPress în sine; în schimb, era o aplicație separată care comunica cu site-ul tău WordPress folosind xmlrpc.php.

Dar nu a fost folosit doar pentru aplicația mobilă XML-RPC: a fost folosit și pentru a permite comunicarea între WordPress și alte platforme de blogging, a activat trackback-uri și pingback-uri și a alimentat pluginul Jetpack care conectează un WordPress găzduit de sine. site către WordPress.com.

Dar, deoarece API-ul REST a fost integrat în nucleul WordPress, fișierul xmlrpc.php nu mai este folosit pentru această comunicare. În schimb, API-ul REST este folosit pentru a comunica cu aplicația mobilă WordPress, cu clienții desktop, cu alte platforme de blogging, cu WordPress.com (pentru pluginul Jetpack) și cu alte sisteme și servicii. Gama de sisteme cu care poate interacționa API-ul REST este mult mai mare decât cea permisă de xmlrpc.php. De asemenea, există mult mai multă flexibilitate.

Deoarece API-ul REST a înlocuit XML-RPC, acum ar trebui să dezactivați xmlrpc.php pe site-ul dvs. Să vedem de ce.

De ce ar trebui să dezactivați xmlrpc.php

Motivul principal pentru care ar trebui să dezactivați xmlrpc.php pe site-ul dvs. WordPress este că introduce vulnerabilități de securitate și poate fi ținta atacurilor.

Acum că XML-RPC nu mai este necesar pentru a comunica în afara WordPress, nu există niciun motiv să îl mențineți activ. De aceea, este înțelept să vă faceți site-ul mai sigur dezactivându-l.

Dacă xmlrpc.php este o răspundere de securitate și nu mai face treabă, de ce nu a fost eliminat cu totul din WordPress?

Motivul pentru aceasta este că una dintre caracteristicile cheie ale WordPress va fi întotdeauna compatibilitatea cu versiunea anterioară. Dacă vă gestionați bine site-ul, veți ști că mențineți WordPress actualizat, precum și orice plugin sau teme, este esențială.

Dar vor exista întotdeauna proprietari de site-uri web care nu vor sau nu pot să-și actualizeze versiunea de WordPress. Dacă rulează o versiune anterioară API-ului REST, vor avea totuși nevoie de acces la xmlrpc.php.

Să ne uităm la vulnerabilitățile specifice mai detaliat.

Atacurile DDoS prin Pingback-uri XML-RPC

Una dintre funcțiile pe care xmlrpc.php le-a activat a fost pingback-urile și trackback-urile. Acestea sunt notificările care apar în comentariile de pe site-ul tău atunci când un alt blog sau site trimite la conținutul tău.

Specificația XML-RPC a făcut posibilă această comunicare, dar aceasta a fost înlocuită de API-ul REST (cum am văzut deja).

Dacă XML-RPC este activat pe site-ul dvs., un hacker ar putea lansa un atac DDoS pe site-ul dvs. prin exploatarea xmlrpc.php pentru a trimite un număr mare de pingback-uri către site-ul dvs. într-un timp scurt. Acest lucru ar putea supraîncărca serverul dvs. și vă poate scoate site-ul în funcțiune.

Atacurile de forță brută prin XML-RPC

De fiecare dată când xmlrpc.php face o solicitare, trimite numele de utilizator și parola pentru autentificare. Acest lucru prezintă o răspundere semnificativă de securitate și este ceva pe care API-ul REST nu îl face. De fapt, API-ul REST folosește OAuth care trimite token-uri pentru autentificare în loc de nume de utilizator sau parole.

Deoarece xmlrpc.php trimite informații de autentificare la fiecare solicitare, hackerii le-ar putea folosi pentru a încerca să acceseze site-ul dvs. Un atac de forță brută ca acesta le-ar putea permite să introducă conținut, să ștergă cod sau să vă deterioreze baza de date.

Dacă un atacator trimite suficiente cereri către site-ul dvs., fiecare cu o pereche diferită de nume de utilizator și parolă, există șansa să o lovească în cele din urmă pe cea potrivită, oferindu-le acces la site-ul dvs.

De aceea, dacă rulați o versiune actualizată a WordPress, care utilizează API-ul REST pentru a comunica cu sisteme externe, ar trebui să dezactivați xmlrpc.php . Nu este necesar și ar putea face site-ul dvs. vulnerabil.


Rulează xmlrpc.php pe site-ul dvs. WordPress?

Primul lucru pe care trebuie să-l faceți este să identificați dacă xmlrpc.php rulează pe site-ul dvs. WordPress.

Acesta nu este un caz simplu de a verifica dacă fișierul este acolo: face parte din fiecare instalare WordPress și va fi prezent chiar dacă XML-RPC este dezactivat.

Pentru a verifica dacă xmlrpc.php este activat pe site-ul dvs., utilizați Serviciul de validare XML-RPC WordPress. Aceasta vă va verifica site-ul și vă va spune dacă xmlrpc.php este activat.

Serviciu de validare XML-RPC WordPress
Serviciu de validare XML-RPC WordPress

Iată rezultatul pe care l-am obținut când am verificat acest site pe serviciu.

Verificare Kinsta XML-RPC
Verificare Kinsta XML-RPC

Aceasta arată că xmlrpc.php a fost dezactivat pe kinsta.com. Deci, dacă executați verificarea și descoperiți că xmlrpc.php este încă activat pe site-ul dvs., cum îl dezactivați?

Cum se dezactivează xmlrpc.php

Există trei moduri de a dezactiva xmlrpc.php:

Să aruncăm o privire la fiecare în parte.

Cum se dezactivează xmlrpc.php cu un plugin

Instalarea unui plugin pentru a dezactiva xmlrpc.php este cel mai simplu mod de a face acest lucru. Pluginul Disable XML-RPC îl va dezactiva complet. Iată cum îl folosești.

Punctul meu de plecare este propriul meu site web, pe care xmlrpc.php este activat. Puteți vedea asta prin verificarea pe care am făcut-o:

Site-ul web al Rachel McCollin - verificare XML-RPC
Site-ul web al Rachel McCollin – verificare XML-RPC

Instalați pluginul prin intermediul ecranului dvs. de pluginuri din administratorul WordPress și activați-l.

Nu trebuie să faceți nimic altceva: activarea pluginului va determina dezactivarea XML-RPC. Acum, dacă verific pe site-ul meu, obțin un rezultat diferit:

Site-ul web Rachel McCollin - a doua verificare XML-RPC
Site-ul web Rachel McCollin – a doua verificare XML-RPC

Este atat de simplu!

Dezactivați pingback-urile XML-RPC cu un plugin

Dar dacă doriți să dezactivați unele aspecte ale xmlrpc.php și nu altele? Pluginul Disable XML-RPC Pingback vă permite să dezactivați doar funcționalitatea pingback, ceea ce înseamnă că aveți în continuare acces la alte caracteristici ale XML-RPC dacă aveți nevoie de ele.

Pluginul funcționează în același mod ca și pluginul Disable XML-RPC: instalați-l, activați-l și va funcționa.

Configurați activarea XML-RPC și REST API cu un plugin

Dacă doriți un control mai precis asupra modului în care sunt configurate atât xmlrpc.php, cât și API-ul REST pe site-ul dvs., puteți instala pluginul REST XML-RPC Data Checker.

După ce ați instalat și activat acest plugin, accesați Setări > REST XML-RPC Data Checker și faceți clic pe fila XML-RPC .

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

Acest lucru vă permite să configurați exact ce aspecte ale xmlrpc.php sunt active pe site-ul dvs.

Aveți nevoie de o găzduire extrem de rapidă, sigură și prietenoasă pentru dezvoltatori? Kinsta este creat ținând cont de dezvoltatorii WordPress și oferă o mulțime de instrumente și un tablou de bord puternic. Verificați planurile noastre

Alternativ, îl puteți opri pur și simplu. Și dacă doriți și control asupra API-ului REST, pluginul vă oferă o altă filă pentru asta.

Cum să dezactivezi xmlrpc.php fără un plugin

Dacă preferați să nu instalați un alt plugin pe site-ul dvs., puteți dezactiva xmlrpc.php adăugând un cod într-un filtru sau în fișierul dvs. .htaccess. Să ne uităm la ambele metode.

Dezactivați xmlrpc.php printr-un filtru

O opțiune aici este să utilizați filtrul xmlrpc_enabled pentru a dezactiva xmlrpc.php. Adaugă această funcție la un plugin și activează-l pe site-ul tău:

 add_filter( 'xmlrpc_enabled', '__return_false' );

Puteți adăuga acest lucru în fișierul cu funcțiile temei, dar este mai bine să scrieți un plugin.

Cealaltă opțiune are de-a face cu editarea fișierului dvs. .htaccess, care este disponibil la furnizorii de găzduire care folosesc Apache, prin conectarea la serverul site-ului dvs. prin FTP sau cPanel.

Dezactivați xmlrpc.php prin fișierul .htacess

În fișierul dvs. .htaccess , adăugați acest cod:

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

Asigurați-vă că faceți o copie a fișierului vechi înainte de a face acest lucru, în cazul în care aveți probleme.

Cereți furnizorului dvs. de găzduire să dezactiveze xmlrpc.php

În mod alternativ, unii furnizori de găzduire vor dezactiva xmlrpc.php dacă este detectat un atac.

La Kinsta, când este detectat un atac prin XML-RPC, un fragment de cod este adăugat automat la fișierul Nginx.config:

 location ~* ^/xmlrpc.php$ { return 403; }

Acest lucru va produce o eroare 403 și va opri atacul în mers.

Dacă faci asta singur, cel mai bine este să folosești una dintre metodele de mai sus. Dar înainte de a o face, verificați întotdeauna mai întâi cu furnizorul dvs. de găzduire.

Când trebuie să activați xmlrpc.php?

S-ar putea să existe ocazii în care trebuie să activați xmlrpc.php pe site-ul dvs. WordPress sau când nu ar trebui să-l dezactivați complet.

Acestea sunt:

  • Nu rulați API-ul REST (nu este recomandat, dar necesar în unele situații), dar trebuie să comunicați între site-ul dvs. WordPress și alte sisteme.
  • Nu puteți actualiza WordPress la versiunea 4.4 sau o versiune ulterioară, așa că nu aveți acces la API-ul REST. Acest lucru ar putea fi din cauza restricțiilor în configurația dvs. de găzduire (caz în care aș schimba furnizorul de găzduire) sau a incompatibilității temei sau a pluginurilor (caz în care le-aș înlocui sau le-aș actualiza).
  • Lucrezi cu o aplicație externă care nu poate accesa API-ul WP REST, dar poate accesa XML-RPC (pe termen lung, aș sfătui să actualizezi aplicația respectivă sau să treci la o aplicație compatibilă cu REST).

Asta e! Niciunul dintre acestea nu este motive deosebit de bune pentru a menține specificația XML-RPC activată.

Singurul motiv pentru care este încă în WordPress este compatibilitatea cu versiunea anterioară și l-ați folosi numai dacă lucrați cu sisteme învechite. Pentru oricine dorește să-și mențină site-urile la zi și să lucreze cu cea mai recentă tehnologie, dezactivarea xmlrpc.php este calea de urmat.

XML-RPC a fost cândva o parte esențială a WordPress. Acum reprezintă un risc de securitate - Acest ghid vă va arăta exact cum să îl dezactivați pe site-ul dvs. Faceți clic pentru a trimite pe Tweet

rezumat

Specificația XML-RPC a fost dezvoltată chiar înainte ca WordPress să fie creat, ca mijloc pentru WordPress de a comunica cu sisteme și aplicații externe. Are defecte de securitate inerente și vă poate face site-ul vulnerabil la atac.

Acum că API-ul REST permite site-ului dvs. să comunice cu alte aplicații, puteți dezactiva în siguranță xmlrpc.php. Dacă urmați pașii de mai sus, dezactivând-o, veți îmbunătăți securitatea site-ului dvs.