Schakel de REST API uit voor niet geautoriseerde gebruikers

De REST API van WordPress is standaard toegankelijk voor alle bezoekers. Dit kan onder andere worden gebruikt voor iets dat “enumereren van gebruikersnamen” heet en kan worden gezien als een veiligheidsrisico. Dit specifieke risico is bekend als CVE-2017-5487.

Je kunt gemakkelijk controleren of jouw website hier kwetsbaar voor is door de volgende URL te bezoeken in een incognito venster: https://<domeinnaam.nl>/wp-json/wp/v2/users/.

Krijg jij zoals hieronder een foutmelding te zien? Dan is de REST API  van WordPress al beveiligd en hoef je niet meer verder te lezen.

{"code":"itsec_rest_api_access_restricted","message":"You do not have sufficient permission to access this endpoint. Access to REST API requests is restricted by Solid Security settings.","data":{"status":401}}

{"code":"rest_not_logged_in","message":"Je bent momenteel niet ingelogd.","data":{"status":401}}

Krijg jij in plaats van bovenstaande foutmelding een hoop informatie te zien over de auteurs en artikelen op je website? Lees dan verder om dit uit te schakelen.

Zo schakel je de REST API uit voor niet geautoriseerde gebruikers

Volg onderstaande stappen om de WordPress REST API ontoegankelijk te maken voor niet geautoriseerde gebruikers.

Let op: Je moet de REST API niet volledig uitschakelen; dit kan namelijk de functionaliteit van de WordPress stukmaken, omdat sommige functionaliteit afhankelijk is van een actieve API. Je kunt echter wel een filter gebruiken om te vereisen dat de API alleen gebruikt kan worden door geautoriseerde gebruikers, wat anonieme externe toegang effectief voorkomt.

  1. Open Bestandsbeheer
  2. Open de volgende locatie: httpdocs / wp-content / themes / thema naam / functions.php
  3. Voeg onderstaande code onderaan dit bestand toe:

  4. /**
    * Disable JSON API for unauthenticated users
    */
    add_filter( 'rest_authentication_errors', function( $result ) {
    // If a previous authentication check was applied,
    // pass that result along without modification.
    if ( true === $result || is_wp_error( $result ) ) {
    return $result;
    }

    // No authentication has been performed yet.
    // Return an error if user is not logged in.
    if ( ! is_user_logged_in() ) {
    return new WP_Error(
    'rest_not_logged_in',
    __( 'You are not currently logged in.' ),
    array( 'status' => 401 )
    );
    }

    // Our custom authentication check should have no effect
    // on logged-in requests
    return $result;
    });

  5. Sla de wijzigingen op en bezoek daarna opnieuw de URL in een incognito venster

Hulp nodig van een van onze hosting gurus?

Heb je nu antwoord nodig op een dringende vraag of hulp nodig van onze support? Onze hosting specialisten staan maar al te graag voor je klaar!

Customer Support Team

Onze klantenservice is op dit moment gesloten. We zijn weer open op de eerstvolgende werkdag om 08:30 uur

Of neem een kijkje in onze 'stap-voor-stap' support handleidingen.

Bekijk support artikelen