WordPress maakt gebruik van een virtueel taakplanningssysteem genaamd WP-Cron om geautomatiseerde taken uit te voeren. Binnen WooCommerce is WP-Cron verantwoordelijk voor vitale processen, zoals het controleren op mislukte betalingen, het verzenden van e-mailnotificaties en het synchroniseren van productvoorraden met externe leveranciers. Omdat WP-Cron echter standaard afhankelijk is de website-bezoeken van echte gebruikers, kan dit mechanisme door aanvallers worden misbruikt om een Denial of Service (DoS) aanval te veroorzaken, waardoor de webshop onbereikbaar wordt.
Hoe WP-Cron standaard werkt (en faalt)
In tegenstelling tot een traditionele systeem-cronjob die onafhankelijk op de achtergrond draait, is WP-Cron "gebeurtenisgestuurd". Telkens wanneer een bezoeker een willekeurige pagina op uw WordPress-site laadt, controleert de core in de database of er een geplande taak klaarstaat voor uitvoering. Als dat zo is, start WordPress op de achtergrond een nieuw HTTP-verzoek naar het bestand wp-cron.php.
Dit mechanisme brengt twee grote problemen met zich mee:
-
Serverbelasting bij veel verkeer: Op een drukke WooCommerce-shop met duizenden bezoekers per uur kan dit constante controleren en triggeren van
wp-cron.phpleiden tot enorme serverbelasting. -
Brute-Force DoS exploitatie: Een aanvaller kan een script opzetten dat duizenden gelijktijdige verzoeken rechtstreeks naar
https://uwshop.nl/wp-cron.phpstuurt. Omdat elk verzoek de server dwingt om zware database-controles uit te voeren, raakt de server snel overbelast (CPU/geheugen-uitputting), waardoor legitieme klanten de webshop niet meer kunnen bezoeken.
De oplossing: WP-Cron uitschakelen en vervangen door een echte Cronjob
De effectiefste manier om dit risico te elimineren en tegelijkertijd de prestaties van uw WooCommerce-winkel te verbeteren, is het uitschakelen van het standaard virtuele cron-mechanisme en dit te vervangen door een echte, door het besturingssysteem aangestuurde cronjob.
Stap 1: Schakel WP-Cron uit in wp-config.php
Voeg de volgende regel toe aan uw wp-config.php bestand, net boven de regel "That's all, stop editing!":
define('DISABLE_WP_CRON', true);
Hiermee negeert WordPress de controle bij elk paginabezoek, waardoor de serverbelasting direct daalt en aanvallers de site niet meer via deze methode kunnen platleggen.
Stap 2: Stel een traditionele Cronjob in
Log in op het controlepaneel van uw hostingprovider (zoals cPanel, Plesk of DirectAdmin) of maak via SSH verbinding met de server. Voeg een cronjob toe die elke 5 of 10 minuten wordt uitgevoerd.
Het cron-commando ziet er doorgaans als volgt uit (via CLI):
*/5 * * * * php /var/www/html/wp-cron.php >/dev/null 2>&1
Of, als uw hostingomgeving vereist dat het via een HTTP-verzoek verloopt (gebruik wget of curl):
*/5 * * * * wget -q -O - https://uwshop.nl/wp-cron.php?doing_wp_cron >/dev/null 2>&1
Conclusie voor winkelbeheerders
Door WP-Cron te verhuizen naar de systeemlaag van de server, beschermt u uw webshop tegen een eenvoudige en veelgebruikte DoS-aanvalsmethode. Bovendien zorgt een echte cronjob ervoor dat kritieke e-commerce-taken (zoals het versturen van bestelbevestigingen) consistent en op tijd worden uitgevoerd, zelfs als er tijdelijk geen bezoekers op de website aanwezig zijn.
