WordPress REST API: waarom je alleen uitgelogde verzoeken blokkeert in plaats van de API helemaal uit te zetten

Affiliatemelding v3.1
Affiliatemelding v3.2 (mobiel)

De WordPress REST API toont de gebruikersnamen van je site via het wp-json-adres, ook aan bezoekers die niet zijn ingelogd. Zet je de API helemaal uit, dan kan het opslaan in de blokeditor mislukken; daarom laat ik zien hoe je alleen uitgelogde verzoeken blokkeert en dat controleert aan de hand van een 401-antwoord.

1️⃣ Wat is de WordPress REST API: het wp-json-adres en wat het doet

De WordPress REST API is een ingebouwde WordPress-functie die sitegegevens zoals berichten, pagina's en gebruikers in JSON-formaat uitwisselt, en reageert onder /wp-json/ achter het siteadres.

Onder /wp-json/ zijn de adressen per gegevenstype verdeeld, zoals [wp/v2/posts], [wp/v2/pages] en [wp/v2/users], en elk van die adressen heet een endpoint. Ook de blokeditor stuurt verzoeken naar deze adressen wanneer hij een bericht opslaat.

https://example.com/wp-json/
https://example.com/wp-json/wp/v2/posts
https://example.com/wp-json/wp/v2/pages
https://example.com/wp-json/wp/v2/users

2️⃣ Gebruikersnamen die via wp-json zichtbaar worden

  • ↪️ Waarom blokkeren: users 401 · ook zichtbaar op auteurspagina's

Het endpoint [wp/v2/users] geeft voor elke gebruiker die berichten heeft gepubliceerd een weergavenaam en een slug terug, en standaard staat in de slug gewoon de inlognaam. Ook bij het beheerdersaccount van de testsite https://testpilotweb.com/ waren de slug en de inlognaam gelijk.

Is de inlognaam bekend, dan hoeft een aanvaller alleen nog het wachtwoord te achterhalen om in te loggen; ook op het WordPress-inlogscherm van de testsite werden op 7 oktober 2026 alleen al 2.570 brute-force-pogingen geregistreerd.

Ook als je dit adres blokkeert, blijft dezelfde inlognaam zichtbaar in het adres van de auteurspagina (/author/gebruikersnaam/).

3️⃣ Wat er stukgaat als je de API helemaal uitzet

  • ↪️ Opslaan in de blokeditor · MCP toont 0 tools

Zet je de WP REST API helemaal uit, dan mislukt als eerste het opslaan in de blokeditor; daarom verdeelt ook Perfmatters, een van de optimalisatieplugins voor WordPress, het uitschakelen in twee niveaus: [Disable for Non-Admins] en [Disable When Logged Out]. Heeft je site auteurs- of bijdragersaccounts, dan blokkeert [Disable for Non-Admins] ook het opslaan van berichten door die accounts.

Zelfs op een site die alleen uitgelogde verzoeken blokkeerde, toonde een MCP-connector in claude.ai na het afronden van de authenticatie 0 tools. In de serverlog stonden alle MCP-verzoeken als 401, en de oorzaak was dat Perfmatters het verzoek blokkeerde voordat MCP het token controleerde.

Waarde van [Disable REST API]users-adres voor uitgelogde bezoekersOpslaan door niet-beheerdersaccountsGeschikt voor
Default (Enabled)Gebruikersnamen zichtbaarWordt opgeslagen—
Disable for Non-Admins401Opslaan misluktSites zonder auteurs- of bijdragersaccounts
Disable When Logged Out401Wordt opgeslagenSites met auteursaccounts; voeg voor tokenverbindingen zoals MCP een uitzonderingspad toe

4️⃣ Alleen uitgelogde verzoeken blokkeren (Perfmatters)

  • ↪️ Waar je het instelt · het 401-antwoord controleren

Ga in het WordPress-beheerscherm naar [Settings] → [Perfmatters] → [General], zet [Disable REST API] onder [Core] op [Disable When Logged Out] en klik op [Save Changes].

WordPress Settings → Perfmatters → General(WordPress REST API)
Perfmatters Disable REST API: Disable When Logged Out

Talen die Perfmatters ondersteunt: Engels (standaard), Koreaans, Duits, Frans, Italiaans, Nederlands, Portugees (Brazilië), Russisch, Oekraïens, Turks, Bulgaars, Hongaars, Indonesisch, Perzisch, Chinees (vereenvoudigd)

Perfmatters settings simulator: General → Core
Perfmatters-instellingensimulator · Perfmatters-review · gids

Open je /wp-json/wp/v2/users zonder in te loggen in een incognitovenster, dan krijg je een 401-antwoord met de melding [Sorry, you do not have permission to make REST API requests.], terwijl de blokeditor gewoon blijft opslaan als je bent ingelogd.

🔌 Hetzelfde verzoek, twee antwoorden GET /wp-json/wp/v2/users
Niet-geblokkeerde site
200
Ook niet-ingelogde bezoekers kunnen de gebruikersnamen zien.
[
  {
    "id": 1,
    "name": "User A",
    "slug": "user_a",
    "link": "https://example.com/author/user_a/"
  }
]
Site met [Disable When Logged Out]
401
Verzoeken zonder inlog krijgen een 401-antwoord met een melding.
{
  "code": "rest_authentication_error",
  "message": "Sorry, you do not have permission to make REST API requests.",
  "data": { "status": 401 }
}
slug Standaard staat in de slug gewoon de inlognaam.
Links staan alleen vier velden uit het antwoord (id · name · slug · link), en de naam is een voorbeeld (user_a).


5️⃣ Uitzonderingen op geblokkeerde paden

  • ↪️ Uitzondering voor het MCP-pad · verschil met het verwijderen van REST API-links

Moet je bij een blokkade één bepaald pad openzetten, voeg dat pad dan toe aan het filter [perfmatters_rest_api_exceptions] van Perfmatters. Het probleem met 0 tools bij de claude.ai MCP-connector is opgelost met een PHP-snippet in het menu [Code] van Perfmatters, die alleen het MCP-pad als uitzondering instelt.

add_filter('perfmatters_rest_api_exceptions', function($exceptions) {
    $exceptions[] = '/mcp/mcp-oauth-server';
    return $exceptions;
});

Ook na het toevoegen van de uitzondering blokkeert MCP zelf verzoeken zonder token met een 401-antwoord en de melding [MCP authentication required.], terwijl /wp-json/wp/v2/users het 401-antwoord van Perfmatters blijft teruggeven.

🚦 De volgorde die een verzoek doorloopt
Vóór de uitzondering · MCP-verzoek
Een verzoek dat de claude.ai MCP-connector na de authenticatie stuurde, met [Disable When Logged Out] aan.
Perfmatters
Geblokkeerd met 401
→↓
MCP-tokencontrole
Niet bereikt
→↓
Resultaat
0 tools
Na de uitzondering · MCP-verzoek
/mcp/mcp-oauth-server is als pad aan de uitzonderingen van Perfmatters toegevoegd.
Perfmatters
Doorgelaten als uitzonderingspad
→↓
MCP-tokencontrole
MCP controleert zelf
→↓
Resultaat
401 zonder token
[MCP authentication required.]
Na de uitzondering · /wp-json/wp/v2/users
Paden die niet bij de uitzonderingen staan, blijven geblokkeerd.
Perfmatters
Geblokkeerd met 401
→↓
Resultaat
Gebruikersnamen blijven verborgen
⚠️ Perfmatters blokkeert het verzoek voordat MCP het token controleert.

[Remove REST API Links] in hetzelfde onderdeel [Core] verwijdert alleen de api.w.org-link uit de paginakop en de antwoordheaders; de WP REST API zelf blijft gewoon antwoorden.

🔢 FAQ & aanbevolen content

xmlrpc.php is een ander adres dan de REST API, dus het blijft antwoorden ook als de REST API is geblokkeerd. Op de testsite werden op 8 oktober 2026 alleen al 734 POST-verzoeken naar xmlrpc.php geregistreerd, en in Perfmatters blokkeer je dat met [Disable XML-RPC] in hetzelfde onderdeel [Core].

WP Rocket zet /wp-json/-adressen op de lijst met cache-uitsluitingen, dus REST API-antwoorden veranderen zodra je opslaat. Instellingen die de HTML van de pagina veranderen, zoals [Remove REST API Links], worden pas zichtbaar nadat de cache is geleegd.

Nee. De WordPress-blokeditor stuurt verzoeken naar de REST API wanneer hij berichten opslaat, en ook MCP-connectors die AI-tools zoals claude.ai koppelen, gebruiken paden onder /wp-json/.

ℹ️ Affiliatemelding
De content van deze site bevat affiliatelinks. Koopt een bezoeker via een van deze links een product of dienst, dan ontvangt deze site een commissie van de verkoper. Het bedrag dat de koper betaalt (bij acties gaat het omlaag ↓) wordt daardoor niet hoger. De vermelde prijzen, kortingen en voorraad gelden op het moment van schrijven en kunnen afwijken; controleer ze daarom vóór je aankoop bij de verkoper. Producten worden gekozen en beoordeeld volgens onze eigen criteria, en commissies hebben geen invloed op de volgorde of de inhoud van de beoordelingen.

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Laat zien dat je geen machine bent: 7   +   2   =