Wat is xmlrpc.php en hoe schakel ik het uit in WordPress?
Door Eureka Studio · Bijgewerkt op
Kort antwoord
Via XML-RPC kunnen apps inloggen op xmlrpc.php, een aparte deur die het verbergen van wp-login.php niet afsluit. Uitschakelen is veilig, tenzij je Jetpack of de WordPress-app gebruikt. Blokkeer het bestand in .htaccess, voeg het filter xmlrpc_enabled toe, of gebruik een plugin die inloggen via XML-RPC afsluit en pingbacks behoudt. Test het daarna.
Stappen
1Stap 1
Controleer of xmlrpc.php antwoordt
Ga naar yoursite.com/xmlrpc.php. Zie je "XML-RPC server accepts POST requests only.", dan staat de deur open.
2Stap 2
Begrijp waarom het ertoe doet
De Oppervlakscan van Hushfort probeert het echt. Op een open site meldt hij dat wachtwoorden kunnen worden geprobeerd buiten het verborgen inlogpad om, en dat system.multicall één verzoek honderden pogingen laat bevatten.

3Stap 3
Kies hoe ver je hem afsluit
Open Hushfort → Oppervlakbeveiliging en zet Oppervlakbeveiliging inschakelen aan. XML-RPC staat standaard op "Inloggen uitschakelen, pingbacks behouden (aanbevolen)", wat bij de meeste sites past. "Volledig uitschakelen" is het strengst, maar stopt Jetpack en de officiële app. Klik op Wijzigingen opslaan.

4Stap 4
Test of inloggen via XML-RPC wordt geweigerd
Klik terug in het Overzicht op Opnieuw scannen. De regel XML-RPC hoort nu te luiden: "Inloggen uitgeschakeld: wachtwoordpogingen worden geweigerd, pingbacks blijven werken."

Waarom het ertoe doet
XML-RPC is een oude interface om WordPress op afstand te bedienen. Voordat de REST API bestond,
publiceerden desktopeditors en mobiele apps er hun berichten mee. Hij wordt nog steeds met elke
WordPress-site meegeleverd, op /xmlrpc.php, en accepteert nog steeds bij elk verzoek een
gebruikersnaam en wachtwoord.
Daarmee is het een tweede inlogdeur. Het verbergen van wp-login.php raakt hem niet.
Inloglimietcode die alleen het inlogformulier in de gaten houdt, ziet hem niet. En met
system.multicall kan één HTTP-verzoek honderden wachtwoordgokken bevatten. Een limiet die
verzoeken telt, ziet één poging waar er vijfhonderd waren.
Dit is geen theorie. We hebben deze laag gebouwd nadat een webwinkel via XML-RPC wachtwoordpogingen bleef ontvangen terwijl de inlogpagina al verborgen was.
Gebruik je XML-RPC? Waarschijnlijk niet als geen van deze punten op jou van toepassing is:
- Je koppelt de site aan Jetpack.
- Je publiceert of modereert vanuit de officiële WordPress-app.
- Je gebruikt een oudere desktop-blogtool, of een dienst die om je WordPress-gebruikersnaam en -wachtwoord vraagt (in plaats van een applicatiewachtwoord) om namens jou te publiceren.
- Je bent afhankelijk van pingbacks van andere blogs.
Twijfel je, sluit dan alleen het inloggen af en behoud pingbacks. Dat neemt het risico op wachtwoorden raden weg en laat de onschuldige onderdelen intact. Strenger kan later altijd nog.
Veelgemaakte fouten
- De login verbergen en het daarbij laten. Wachtwoorden raden verhuist gewoon naar
xmlrpc.php. - Het hele bestand blokkeren zonder te controleren. Jetpack en de officiële WordPress-app maken verbinding via XML-RPC. Gebruik je die, sluit dan alleen de inlogmethoden af of test zorgvuldig.
- Op een schakelaar vertrouwen zonder te testen. Bij sommige methoden blijven delen van XML-RPC antwoorden. Controleer het resultaat altijd met een echt verzoek (zie stap 4, of controleer wat je site prijsgeeft).
- De cachelaag vergeten. Blokkeert een CDN-regel
xmlrpc.phpal, dan heeft een instelling in WordPress geen zichtbaar effect. Dat is prima; weet alleen welke laag het werk doet.
Zonder plugin
Optie 1: het filter xmlrpc_enabled. Zet dit in een kleine must-use-plugin
(wp-content/mu-plugins/no-xmlrpc-login.php) of in de functions.php van je childthema:
<?php
add_filter( 'xmlrpc_enabled', '__return_false' );
Dit schakelt XML-RPC-methoden uit waarvoor je moet inloggen. Pingbacks blijven werken, omdat
die geen login nodig hebben. Op zichzelf verwijdert dit system.multicall niet, en het bestand
beantwoordt nog steeds verzoeken. Om ook de multicall-methode te schrappen:
<?php
add_filter( 'xmlrpc_methods', function ( $methods ) {
unset( $methods['system.multicall'] );
return $methods;
} );
Optie 2: het bestand op de server blokkeren. Op Apache, in .htaccess:
<Files xmlrpc.php>
Require all denied
</Files>
Op Nginx: location = /xmlrpc.php { deny all; }. Dit is de strengste optie en kost de server
niets, maar het schakelt ook pingbacks, Jetpack en de app uit, en het staat buiten WordPress,
dus je vergeet het makkelijk als je van host verhuist.
Als er iets misgaat
- Jetpack toont een verbindingsfout. Jetpack heeft XML-RPC nodig. Schakel over van "Volledig uitschakelen" naar "Inloggen uitschakelen, pingbacks behouden", of verwijder je serverregel.
- De WordPress-app kan niet inloggen. Zelfde oorzaak. Gebruik de browser op je telefoon, of sta inloggen via XML-RPC toe en vertrouw op inloglimieten plus tweefactorauthenticatie.
- Een publicatietool publiceert niet meer. Controleer of hij XML-RPC gebruikt. De meeste moderne tools zijn overgestapt op de REST API met applicatiewachtwoorden.
Met Hushfort
Het Achterdeurslot is onderdeel van Hushfort Pro. De Oppervlakscan, die laat zien of XML-RPC openstaat, zit in Hushfort Security, de gratis WordPress-beveiligingsplugin.
Het Achterdeurslot is onderdeel van de laag Oppervlakbeveiliging van Hushfort. Je hebt vier keuzes:
- Inloggen uitschakelen, pingbacks behouden (aanbevolen): wachtwoorden raden via XML-RPC wordt onmogelijk, terwijl pingbacks en trackbacks blijven werken. Een goede keuze voor webwinkels.
- Volledig uitschakelen: de strengste optie. Jetpack en de officiële app kunnen geen verbinding maken.
- Alleen system.multicall uitschakelen: sluit massaal raden af en laat de rest met rust.
- Niet wijzigen: de standaard van WordPress.
De Oppervlakscan controleert daarna het resultaat met echte verzoeken, zodat je ziet wat een
buitenstaander ziet. Belastingbeveiliging rekent bovendien meer voor verzoeken aan
xmlrpc.php dan voor een normale paginaweergave, wat resterend lawaai afremt.
Veelgestelde vragen
Is het veilig om XML-RPC uit te schakelen in WordPress?
Verbergt het verbergen van de inlogpagina ook xmlrpc.php?
Wat is system.multicall?
Gaan pingbacks stuk als ik XML-RPC uitschakel?
Schakelt het filter xmlrpc_enabled XML-RPC volledig uit?
Gerelateerde handleidingen
Hoe controleer ik wat mijn WordPress-site naar buiten laat zien?
Test je WordPress-site zoals een bot dat doet. Vijf verzoeken tonen of de login, XML-RPC en je gebruikersnamen openliggen, en hoe je dichtzet wat je vindt.
Bekijk de stappenHoe beperk ik het aantal inlogpogingen in WordPress?
Stop brute-force-aanvallen: blokkeer een IP na een paar mislukte inlogpogingen. Instellingen die werken, de handmatige code en de gaten om te dichten.
Bekijk de stappenHoe wijzig ik de inlog-URL van WordPress en verberg ik wp-admin?
Wijzig de WordPress-inlog-URL en verberg wp-admin in vijf veilige stappen. Test voordat je uitlogt en weet hoe je weer binnenkomt als je hem vergeet.
Bekijk de stappen
