Resource Enumeration (bron-enumeratie) is een techniek waarbij een aanvaller systematisch de eindpunten van een API afscant om een compleet beeld te krijgen van de aanwezige gegevens, structuren of gebruikers binnen een applicatie. Binnen WooCommerce-webshops zijn de standaard REST API-endpoints vaak te openhartig geconfigureerd. Dit stelt aanvallers in staat om zonder authenticatie complete lijsten met product-ID's, categorieën en soms zelfs klantinformatie te oogsten.
Hoe Resource Enumeration e-commerce shops schaadt
WordPress biedt standaard een openbare REST API om content gemakkelijk toegankelijk te maken voor ontwikkelaars. Eindpunten zoals /wp-json/wc/v3/products zijn bedoeld om producten op te vragen.
Echter, als een webshop unieke, op maat gemaakte B2B-producten verkoopt met klantspecifieke prijzen, of digitale producten die niet voor het publieke oog bestemd zijn, kunnen aanvallers deze data via de API eenvoudig in kaart brengen. Door simpelweg verzoeken te sturen naar: https://uwshop.nl/wp-json/wc/v3/products?status=publish
Kan een concurrent of een hacker uw volledige assortiment, inclusief voorraadniveaus, verborgen productbeschrijvingen en prijslijsten, geautomatiseerd kopiëren (scraping). Dit tast de concurrentiepositie van uw webshop direct aan.
REST API Restricties implementeren
Om te voorkomen dat onbevoegden uw e-commerce data via de API kunnen uitlezen, is het raadzaam om de REST API volledig te blokkeren voor niet-ingelogde gebruikers of voor applicaties die geen geldige API-sleutel meesturen.
Ontwikkelaars kunnen een authenticatiecontrole toevoegen aan de REST-initialisatie:
add_filter('rest_authentication_errors', 'restrict_public_woocommerce_api');
function restrict_public_woocommerce_api($result) {
if (!empty($result)) {
return $result;
}
// Controleer of de gebruiker is ingelogd of dat het een legitiem intern verzoek is
if (!is_user_logged_in()) {
return new WP_Error(
'rest_forbidden',
'Toegang geweigerd. U moet geauthenticeerd zijn om deze bronnen op te vragen.',
array('status' => 401)
);
}
return $result;
}
Praktische stappen voor site-beheerders
-
Gebruik unieke API-sleutels: Deel nooit de hoofd-REST API-sleutels van uw WooCommerce-winkel. Genereer voor elke externe koppeling (zoals een boekhoudprogramma) een aparte sleutel en geef deze uitsluitend de rechten "Alleen lezen" als schrijven niet nodig is.
-
Blokkeer misbruik op de firewall: Configureer uw Web Application Firewall om IP-adressen die abnormaal veel verzoeken sturen naar de
/wp-json/mappenstructuur automatisch te onderwerpen aan een JavaScript-uitdaging (Challenge) of tijdelijk te blokkeren.
