Clickjacking, ook wel bekend als "UI Redressing", is een kwaadaardige techniek waarbij een aanvaller een legitieme website (zoals uw WooCommerce-shop) inlaadt in een onzichtbaar frame (iframe) op een volledig andere website. De aanvaller plaatst vervolgens een verleidelijke knop (bijvoorbeeld "Klik hier voor gratis korting") exact over een vitale knop van uw webshop heen (zoals "Plaats bestelling" of "Verwijder account"). Wanneer de gebruiker op de nepknop klikt, klikt hij in werkelijkheid op de onzichtbare knop van uw webshop. Dit risico kan eenvoudig worden geneutraliseerd met de juiste HTTP-beveiligingsheaders.
Het gevaar voor e-commerce consumenten
In een WooCommerce-omgeving kan clickjacking worden gebruikt voor verschillende frauduleuze doeleinden:
-
Ongewenste aankopen: Consumenten worden misleid om producten te kopen of abonnementen af te sluiten zonder hun medeweten.
-
Accountmanipulatie: Een ingelogde administrator kan worden verleid om op een knop te klikken die een specifieke plug-in deactiveert of een nieuwe gebruiker aanmaakt.
-
Social Engineering: Bezoekers kunnen worden misleid om ongewild pagina's te 'liken' of te delen op sociale media, wat de reputatie van de webshop schaadt.
De verdediging: Content Security Policy en X-Frame-Options
De effectiefste manier om clickjacking te voorkomen is door de browser te instrueren dat uw website nooit mag worden ingeladen binnen een iframe op andere websites. Dit wordt geregeld via HTTP-beveiligingsheaders die de server meestuurt bij elk bezoek.
Er zijn twee primaire headers die dit gedrag controleren:
-
X-Frame-Options: Een oudere maar nog steeds breed ondersteunde header. De waardeDENYverbiedt elk frame, terwijlSAMEORIGINervoor zorgt dat de site alleen in een iframe mag worden geladen op pagina's van uw eigen domein. -
Content Security Policy (CSP)met deframe-ancestorsrichtlijn: De moderne opvolger vanX-Frame-Options. Hiermee kunt u zeer specifiek bepalen welke externe domeinen (bijvoorbeeld een vertrouwde partner of beoordelingssite) uw site wel in een iframe mogen laden.
Hoe implementeert u deze headers in WordPress?
U kunt deze headers toevoegen via het .htaccess bestand (op Apache-servers), de serverconfiguratie (Nginx), of rechtstreeks via PHP in het functions.php bestand van uw actieve WordPress-thema.
Via PHP (functions.php):
function add_security_headers() {
header("X-Frame-Options: SAMEORIGIN");
header("Content-Security-Policy: frame-ancestors 'self';");
}
add_action('send_headers', 'add_security_headers');
Via .htaccess (Apache):
<IfModule mod_headers.c>
Header set X-Frame-Options "SAMEORIGIN"
Header set Content-Security-Policy "frame-ancestors 'self';"
</IfModule>
Conclusie voor site-eigenaren
Het implementeren van security headers is een snelle en kosteneffectieve manier om de algehele beveiliging van uw webshop naar een hoger niveau te tillen. Naast bescherming tegen clickjacking, helpt een goed geconfigureerde CSP ook bij het minimaliseren van de impact van Cross-Site Scripting (XSS) aanvallen, door te bepalen waarvandaan scripts mogen worden ingeladen.
