WordPress-specifikationen XML-RPC utvecklades för att standardisera kommunikationen mellan olika system, vilket innebär att program utanför WordPress (såsom andra bloggnings-plattformar och desktop-klienter) kunde interagera med WordPress.

Denna specifikation har varit en del av WordPress sedan starten och har varit väldigt användbar. Utan den skulle WordPress ha befunnit sig i sin egen isolerade låda, skild från resten av internet.

Xmlrpc.php har emellertid sina nackdelar. Den kan införa sårbarheter till din WordPress-webbplats och har nu ersatts av WordPress REST API, som gör ett mycket bättre jobb med att öppna upp WordPress för andra program.

I det här inlägget ska vi förklara vad xmlrpc.php är, varför du ska inaktivera det, och hjälpa dig att identifiera om det körs på din WordPress-webbplats.

Redo? Nu kör vi igång!

Vad är xmlrpc.php?

XML-RPC är en specifikation som möjliggör kommunikation mellan WordPress och andra system. Den gör detta genom att standardisera dessa kommunikationer, med HTTP som transportmekanism och XML som kodningsmekanism.

XML-RPC kom innan WordPress: det fanns i b2’s blogg-programvara redan 2003. Koden bakom systemet lagras i en fil som kallas xmlrpc.php, i rotkatalogen på webbplatsen. Och den är fortfarande kvar, trots att XML-RPC till stor del är föråldrad.

I tidiga versioner av WordPress var XML-RPC avstängt. Men från version 3.5 och framåt, har den istället varit aktiverad som standard. Den främsta orsaken till detta är att WordPress mobilapp ska kunna prata med din WordPress-installation.

Om du använde wordPress mobilapp före version 3.5, kanske du minns att du behövde aktivera XML-RPC på din webbplats för att appen skulle kunna lägga upp innehåll. Appen var inte igång i själva WordPress; istället var det en separat app som kommunicerade med din WordPress-webbplats med hjälp av xmlrpc.php.

Men XML-RPC användes inte bara för den mobila appen: det användes även för att tillåta kommunikation mellan WordPress och andra bloggnings-plattformar, aktiverade Trackback Och Pingbacks, och det drev Jetpack’s plugin som länkar en självhostad WordPress-webbplats till WordPress.com.

Men eftersom REST API har integrerats i WordPress kärna, är xmlrpc.php- filen inte längre nödvändig för denna kommunikation. I stället används REST API för att låta WordPress mobilapp kommunicera med stationära klienter, med andra bloggnings-plattformar, med WordPress.com (Jetpack-plugin) och med andra system och tjänster. Det utbud av system som REST API kan samverka med är mycket större än det som tillåts av xmlrpc.php. Dessutom finns det mycket mer flexibilitet.

Eftersom REST API har ersatt XML-RPC, bör du nu inaktivera xmlrpc.php på din webbplats. Låt oss undersöka varför.

Varför du bör Inaktivera xmlrpc.php

Den främsta anledningen till att du ska inaktivera xmlrpc.php på din WordPress-webbplats är att det kan skapa säkerhetsproblem och bli föremål för attacker.

Nu när XML-RPC-filen inte längre behövs för att kommunicera utanför WordPress, finns det ingen anledning att hålla den aktiv. Därför är det klokt att göra din webbplats säkrare genom att inaktivera den.

Men om xmlrpc.php är en säkerhetsrisk och inte längre har någon funktion, varför har det då inte tagits bort från WordPress helt och hållet?

Anledningen till detta är att en av de viktigaste funktionerna i WordPress alltid kommer att vara bakåtkompatibilitet. Om du hanterar din webbplats väl, vet du att det är otroligt viktigt att hålla WordPress aktuellt, liksom eventuella Plugins Eller Teman.

Men det kommer alltid att finnas webbplatsägare som är ovilliga eller oförmögna att uppdatera sin version av WordPress. Om de kör en version som föregår REST API, kommer de fortfarande att behöva ha tillgång till xmlrpc.php.

Låt oss titta på de specifika sårbarheterna mer i detalj.

DDoS-attacker via XML-RPC-pingbacks

En av de funktioner som xmlrpc.php aktiverar är pingbacks och trackbacks. Det är detta som visas i kommentarer på din webbplats när en annan blogg eller webbplats länkar till ditt innehåll.

XML-RPC-specifikationen var det som gjorde denna kommunikation möjlig, men den har nu ersatts av REST API (som vi har beskrivit).

Om XML-RPC är aktiverat på din webbplats kan en hackare potentiellt montera en DDoS-attack på din webbplats genom att låta xmlrpc.php skicka stora antal pingbacks till din webbplats under kort tid. Detta kan överbelasta din server och sätta din webbplats ur funktion.

Brute Force-attacker via XML-RPC

Varje gång xmlrpc.php gör en begäran, skickar det användarnamn och lösenord för autentisering. Detta skapar en betydande säkerhetsrisk och är något som REST API undviker. REST API använder istället OAuth som skickar token för autentisering istället för användarnamn eller lösenord.

Eftersom xmlrpc.php skickar autentiseringsinformation med varje begäran, kan hackare använda detta för att försöka komma åt din webbplats. En brute force-attack som denna kan göra det möjligt för dem att infoga innehåll, radera kod eller skada din databas.

Om en angripare skickar tillräckligt många förfrågningar till din webbplats, var och en med ett annat användarnamn och lösenord, finns det en risk att de så småningom hittar rätt, vilket ger dem tillgång till din webbplats.

Det är därför du bör inaktivera xmlrpc.php. Särskilt om du kör en aktuell version av WordPress, som använder REST API för att kommunicera med externa system. Annars kan din webbplats bli väldigt sårbar.

Körs xmlrpc.php på din WordPress-webbplats?

Det första du behöver göra är att identifiera om xmlrpc.php körs på din WordPress-webbplats.

Detta är inte så enkelt som att kontrollera att filen är där: den är en del av varje WordPress-installation och kommer att vara närvarande även om XML-RPC är inaktiverad.

För att kontrollera om xmlrpc.php är aktiverat på din webbplats, använd webbappen XML-RPC Validator. Detta kommer att kontrollera din webbplats och berätta om xmlrpc.php är aktiverat.

webbappen XML-RPC Validator
webbappen XML-RPC Validator

Detta visar att xmlrpc.php har inaktiverats på kinsta.com. Så om du kör kontrollen och upptäcker att xmlrpc.php fortfarande är aktiverat på din webbplats, hur stänger du då av den?

Hur man Inaktiverar xmlrpc.php

Det finns tre sätt att inaktivera xmlrpc.php:

Låt oss ta en titt på var och en av dessa punkter individuellt.

Hur man inaktiverar xmlrpc.php med ett plugin

Det enklaste sättet för inaktivering är att installera ett plugin. Disable XML-RPC-pluginet kommer att inaktivera det helt och hållet. Så här använder du detta.

Min utgångspunkt är min egen hemsida, på vilken xmlrpc.php är aktiverat. Du kan se detta via kontrollen jag gjorde:

Rachel McCollin hemsida – XML-RPC-kontroll
Rachel McCollin hemsida – XML-RPC-kontroll

Installera pluginet via din Plugin-skärm i WordPress admin, och aktivera det.

Du behöver inte göra något annat: Genom att aktivera pluginet kommer XML-RPC att inaktiveras. Om jag nu kör en check på min webbplats, får jag ett annat resultat:

Rachel McCollin webbplats – andra XML-RPC-kontrollen
Rachel McCollin webbplats – andra XML-RPC-kontrollen

Så enkelt är det!

Inaktivera XML-RPC-pingbacks med ett Plugin

Men vad händer om du vill inaktivera vissa aspekter av xmlrpc.php och inte andra? Inaktivera XML-RPC-pingback-pluginet låter dig inaktivera endast pingback-funktionaliteten, vilket innebär att du fortfarande har tillgång till andra funktioner i XML-RPC om du behöver dem.

Pluginet fungerar på samma sätt som Disable-XML-RPC-pluginet: Installera det bara, aktivera det, så kommer det att fungera.

Konfigurera XML-RPC- och REST API-aktivering med ett plugin

Om du vill ha mer finkornig kontroll av hur både xmlrpc.php och REST API är konfigurerade på din webbplats kan du installera Pluginet för REST XML-RPC-datakontroll.

När du har installerat och aktiverat detta plugin går du till Inställningar > REST XML-RPC Data kontroll och klickar på fliken XML-RPC.

REST XML-RPC-datakontroll
REST XML-RPC-datakontroll

Detta låter dig konfigurera exakt vilka aspekter av xmlrpc.php som är aktiva på din webbplats.

Alternativt kan du helt enkelt stänga av det helt och hållet. Och om du även vill ha kontroll över REST API, har pluginet en annan flik för detta.

Hur man Inaktiverar xmlrpc.php utan ett Plugin

Om du helst inte vill installera ett annat plugin på din webbplats, kan du inaktivera xmlrpc.php genom att lägga till lite kod i ett filter, eller till din .htaccess-fil. Låt oss titta på båda metoderna.

Inaktivera xmlrpc.php via ett Filter

Ett alternativ är att använda xmlrpc_enabled för att inaktivera xmlrpc.php. Lägg till denna funktion till ett plugin och aktivera den på din webbplats:

add_filter( 'xmlrpc_enabled', '__return_false' );

Du kan lägga till detta i din fil för temafunktioner, men det är bättre att skriva ett plugin.

Det andra alternativet har att göra med redigering av din .htaccess-fil, som är tillgänglig hos hosting-leverantörer som använder Apache, anslutning till webbplatsens server via FTP Eller Cpanel.

Inaktivera xmlrpc.php via .htacess-filen

I din .htaccess-fil lägger du till den här koden:

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

Se till att du gör en kopia av den gamla filen innan du gör detta, ifall du stöter på problem.

Har din Hosting-leverantör inaktiverat xmlrpc.php

Alternativt kommer vissa hosting-leverantörer inaktivera xmlrpc.php om en attack upptäcks.

Detta kommer att skapa ett 403 fel och stoppa attacken.

Hos Kinsta så behöver du inte oroa dig, detta är redan blockerat. Kontakta supporten angående eventuella problem

Om du gör detta själv, är det bäst att använda en av metoderna ovan. Men innan du gör detta, ska du alltid kontrollera med din hosting-leverantör.

När Behöver du aktivera xmlrpc.php?

Det kan finnas några tillfällen när du behöver aktivera xmlrpc.php på din WordPress-webbplats eller när du inte helt ska inaktivera det.

Dessa tillfällen är:

  • När du inte kör REST API (rekommenderas inte, men är nödvändigt i vissa situationer) men behöver kommunicera mellan din WordPress-webbplats och andra system.
  • Du är oförmögen att uppdatera WordPress till version 4.4 eller högre, så ha inte tillgång till REST API. Detta kan bero på begränsningar i dina hosting-inställningar(Jag skulle byta hosting-leverantör) eller oförenlighet med teman eller plugins (Jag skulle ersätta eller uppdatera dem).
  • Du arbetar med ett externt program som inte kan komma åt WP REST API men kan komma åt XML-RPC (på lång sikt skulle jag råda att uppdatera det programmet eller byta till ett REST-kompatibelt program).

Så där ja! Inget av dessa är särskilt goda skäl för att hålla XML-RPC-specifikationen påkopplad.

Den enda anledningen till att det fortfarande är kvar i WordPress är för bakåtkompatibilitet och det behöver endast användas om man arbetar med föråldrade system. För alla som vill hålla sina webbplatser uppdaterade och arbetar med den senaste tekniken, är inaktivering av xmlrpc.php det allra bästa.

Sammanfattning

XML-RPC-specifikationen utvecklades innan WordPress ens skapades, som ett medel för WordPress att kommunicera med externa system och applikationer. Det har inneboende säkerhetsbrister och skulle kunna göra din webbplats sårbar för angrepp.

Nu när REST API finns, kan du inaktivera xmlrpc.php. Om du följer stegen ovan, kommer du att förbättra webbplatsens säkerhet.

Rachel McCollin

Rachel McCollin has been helping people build websites with WordPress since 2010. She's a huge fan of self-hosted WordPress and wants to help as many people as possible create an awesome website with it.