Wat is Clickjacking?
Clickjacking is wanneer een aanvaller een webpagina-element vermomt of onzichtbaar maakt bovenop een bestaande pagina, met als doel je om te leiden of je iets anders te laten aanklikken. Wanneer je klikt of wordt misleid om op een ander element te klikken, kun je per ongeluk kwaadaardige websites bezoeken, je inloggegevens afstaan of gevoelige informatie lekken. Je kunt zelfs online producten kopen via een nep- of frauduleuze website.
Clickjacking-aanvallen worden meestal uitgevoerd door je een onzichtbare pagina of HTML-element te tonen, meestal binnen een iframe, bovenop een bestaande pagina die je als gebruiker al ziet. Dit laat je geloven dat je op de daadwerkelijke zichtbare pagina klikt, maar in werkelijkheid klik je op een onzichtbare knop of element dat is gekoppeld aan een extra pagina die eroverheen is geplaatst.
Als dat wat verwarrend klinkt, heb even geduld. In deze gids leggen we uit wat clickjacking-aanvallen zijn en hoe ze werken. Je leert hoe je clickjacking kunt voorkomen en wat je kunt doen om je hiertegen te beschermen.
.jpg)
Waarom is Clickjacking Preventie Belangrijk in 2026?
Clickjacking is belangrijk omdat het een onschuldige interactie verandert in iets gevaarlijks met mogelijk verwoestende gevolgen. Je bent je niet eens bewust van de overlay die op je pagina is geplaatst. Het is onzichtbaar voor het blote oog en kan de interface van je pagina aanpassen om je gebruikersacties te misleiden. Als je op een kwaadaardige site terechtkomt met sociale accounts die al zijn geauthenticeerd, kan een aanvaller je gevoelige inloggegevens en andere details stelen.
Clickjacking is ook belangrijk omdat een enkele of verborgen klik je accountinstellingen kan wijzigen, je gedwongen kan abonneren op andere content en pagina's kan laten volgen zonder jouw toestemming. Stel je voor dat een hacker op deze manier je inloggegevens bemachtigt door je via clickjacking op een pagina te laten klikken. Ze kunnen dan de controle over je account overnemen en je kwaadaardige activiteiten laten uitvoeren zonder dat je het merkt.
Clickjacking zal het vertrouwen van je klanten in je organisatie aantasten, je supportkosten verhogen en het moeilijker maken om deze aanvallen te voorkomen. Hoe meer gefragmenteerd en opgeschaald ze worden over verschillende diensten, hoe lastiger het wordt. Het grootste probleem is dat gebruikers het verschil niet kunnen zien tussen overlays van je eigen website en deze misleidende overlays, omdat ze verborgen blijven.
Hoe Werken Clickjacking-aanvallen?
Een veelvoorkomend voorbeeld van een clickjacking-aanval zijn de onzichtbare “koop”- en “like”-knoppen waarop je klikt in de veronderstelling dat je een popup sluit. Een ander klassiek scenario is het plaatsen van een verborgen “inschakelen”- of “activeren”-knop onderaan een scherm van een videogame-interface die je aan het spelen bent.
Houd er rekening mee dat clickjacking geen phishing is. Phishing is gericht op het overtuigen of overhalen om actie te ondernemen. Maar bij een clickjacking-aanval word je misleid of bedrogen door verkeerd te worden gestuurd waar je kliks terechtkomen. Clickjacking voelt natuurlijker aan omdat je er niet bij stilstaat en de aanval niet ziet aankomen (het is niet zo duidelijk).
Vermomde klikken kunnen ook aankopen, eenmalige wachtwoorden en overboekingen bevestigen zonder dat je bevestiging of authenticatie nodig is. Clickjacking-aanvallen kunnen UI-elementen gebruiken om machtigingen te verlenen die onder valse voorwendselen kunnen worden aangeklikt. Het kan ook je camera, microfoon en locatie-instellingen inschakelen en privacy blootstellen via misleidende overlays.
Is een clickjacking-aanval dan een soort browserfout? Niet echt, maar het kan wel misbruik maken van standaardfuncties van je site zoals layering en iframes.
Kan single sign-on-authenticatie het voorkomen? Nee, dat werkt niet omdat een clickjacking-aanval je UI kan manipuleren terwijl SSO alleen verantwoordelijk is voor identiteitsbeheer.
Zowel mobiele apps als hybride apps kunnen worden getroffen door clickjacking-aanvallen, vooral als ze worden gebruikt voor het tonen van externe content.
Hoe Clickjacking-kwetsbaarheden Detecteren?
Een van de beste manieren om clickjacking-kwetsbaarheden te detecteren is door te proberen je webpagina te framen vanaf andere servers.
- Open een lokale omgeving en maak een eenvoudig HTML-bestand. Dit is je Proof of Concept (PoC) HTML-bestand. Gebruik nu een <iframe>-tag binnen de HTML-body. Voeg de URL van de gevoelige pagina die je wilt testen toe aan je
<iframe>-tag. - Vervang je doel-URL door de URL van de pagina die je wilt testen. Sla op en bekijk de pagina in je browser. Als de inhoud van je doelpagina succesvol wordt geladen (de pagina die je in je iframe-tag hebt opgegeven), is je site waarschijnlijk kwetsbaar. Als deze niet laadt, ben je veilig.
- Dit is de eerste manier om een clickjacking-kwetsbaarheid te detecteren, wat we handmatig testen noemen.
Een andere manier om erachter te komen is testen op defense bypasses. Je kunt een eenvoudig frame-busting script gebruiken als JavaScript is uitgeschakeld door je webbrowser. Je kunt ook geavanceerde technieken zoals double framing gebruiken voor clickjacking-preventie en -testen.
Geautomatiseerde kwetsbaarheidsscanners kunnen webapplicaties scannen op verkeerd geconfigureerde anti-clickjacking HTTP-headers en sommige kunnen de HTTP-response headers in de netwerk-tabbladen inspecteren. Pagina's zonder headers zoals X-Frame-Options en Content-Security-Policy zijn kwetsbaar.
Er zijn ook tools die je klikken op doelpagina's kunnen opnemen en ze opnieuw kunnen afspelen met aanvalsoverlays om echte aanvalsscenario's na te bootsen. Hiermee kun je verschillende clickjacking-kwetsbaarheden opsporen.
Hoe Clickjacking-aanvallen Voorkomen?
Hier zijn enkele manieren om clickjacking-aanvallen te voorkomen:
Gebruik Permissions Policy om Browserfuncties te Beheren
Moderne browsers laten je beperken welke functies ingesloten iframes kunnen gebruiken. Stel de Permissions-Policy-header in om fullscreen, geolocatie, camera, microfoon en payment request API's uit te schakelen. Dit voorkomt dat aanvallers gevoelige browserfuncties kunnen misbruiken via overlays. Zelfs als ze je laten klikken, kunnen ze geen gevaarlijke machtigingen activeren zonder jouw expliciete toestemming. Het is een slimme verdedigingslaag die beperkt wat aanvallers daadwerkelijk kunnen doen met hun overlays.
Pas iframe Sandbox-beperkingen toe op Ingesloten Content
Wanneer je externe content in iframes insluit, zorgt het sandbox-attribuut er standaard voor dat deze wordt afgeschermd. Blokkeer scripts, formulieren en pop-ups tenzij je ze specifiek nodig hebt. Gebruik de allow-waarden zorgvuldig—sta alleen allow-scripts toe als het iframe echt JavaScript nodig heeft, en vermijd allow-same-origin tenzij noodzakelijk. Deze containment-strategie voorkomt dat kwaadaardige ingesloten content toegang krijgt tot je hoofdpagina of gebruikersdata. Test je sandbox-configuraties regelmatig om te controleren of ze nog werken zoals bedoeld.
Monitor Gebruikersklikgedrag met Event Listeners
Voeg JavaScript event listeners toe om te volgen waar klikken daadwerkelijk vandaan komen. Controleer of klikken afkomstig zijn van legitieme UI-elementen of van posities die niet overeenkomen met zichtbare knoppen. Vergelijk event.target met event.currentTarget om afwijkingen te detecteren. Dit helpt klikken te detecteren die lijken te zijn gericht op zichtbare elementen, maar in werkelijkheid onzichtbare lagen eronder raken. Hoewel dit vastberaden aanvallers niet zal stoppen, vangt het veelvoorkomende overlay-trucs en creëert het audit trails voor securityteams.
Gebruik Machine Learning en AI Detectie
Geavanceerde ML-modellen kunnen nu clickjacking-patronen herkennen door paginalay-outs en gebruikersinteracties te analyseren. Deze systemen signaleren verdachte iframe-overlays, ongebruikelijke elementpositionering en gedragsafwijkingen in realtime. CNN- en neurale netwerkmodellen getraind op phishing-datasets kunnen bedreigingen identificeren voordat gebruikers schade ondervinden. Naarmate deze technologieën verbeteren, zullen ze geavanceerde aanvallen detecteren die traditionele verdedigingen omzeilen. Zet geautomatiseerde dreigingsdetectie in naast je HTTP-headers voor diepere bescherming.
Gebruik Browser Fingerprinting om Verdachte Activiteit te Identificeren
Maak unieke digitale vingerafdrukken voor elke bezoeker op basis van hun browser-, apparaat- en hardwarekenmerken. Vergelijk vingerafdrukken met je database van bekende gebruikers. Zie je klikken vanaf een nieuw apparaat of locatie die nooit eerder is gebruikt, markeer dit dan voor extra verificatie. Fingerprinting detecteert emulators, VPN's en spoofingtools die aanvallers gebruiken om hun identiteit te maskeren. In combinatie met gedragsanalyse helpt het je echte gebruikers te onderscheiden van bots en fraudeurs die clickjacking-aanvallen proberen uit te voeren.
Toon Authenticiteitsindicatoren van de Website aan Gebruikers
Toon visuele watermerken of bronverificatiebadges die bewijzen dat je pagina authentiek en onaangetast is. Wanneer gebruikers zien dat deze indicatoren verdwijnen of veranderen, wijst dat op een gespoofte pagina of overlay-aanval. Defensieve UI-code kan detecteren wanneer je pagina wordt geframed en automatisch waarschuwingen tonen. Gebruikers leren deze visuele signalen te vertrouwen, waardoor het voor aanvallers moeilijker wordt om hen te misleiden tot het aanklikken van verborgen elementen.
Best Practices voor Clickjacking Preventie
Hier zijn enkele best practices voor clickjacking-preventie:
1. Stel X-Frame-Options HTTP-headers in
De eerste verdedigingslinie is het instellen van de X-Frame-Options-header op je server. Dit geeft browsers aan of je pagina in een iframe of frame mag worden geladen. Je hebt hier drie hoofdopties:
- 'DENY' is de meest veilige keuze en blokkeert elk domein om je content te framen.
- 'SAMEORIGIN' staat alleen je eigen domein toe om de pagina te framen, wat werkt als je interne framing nodig hebt.
- 'ALLOW-FROM uri' laat je specifieke vertrouwde domeinen op de whitelist zetten, maar gebruik dit voorzichtig vanwege compatibiliteitsproblemen met browsers.
2. Implementeer Content Security Policy met frame-ancestors
CSP is de moderne manier om clickjacking te voorkomen en is flexibeler dan X-Frame-Options. Je voegt de frame-ancestors-directive toe aan je Content Security Policy-header en specificeert welke domeinen je content mogen framen. Stel deze in op 'none' als je helemaal geen framing nodig hebt, of geef vertrouwde domeinen op met CSP-syntax.
3. Beveilig je sessiecookies met het SameSite-attribuut
Markeer al je sessiecookies met het SameSite-attribuut ingesteld op 'Strict' of 'Lax'. Dit voorkomt dat cookies worden meegestuurd wanneer je pagina in een iframe van een ander domein wordt geladen.
In combinatie met andere verdedigingsmaatregelen voorkomt dit dat aanvallers geauthenticeerde gebruikerssessies kapen via framing-aanvallen. De bescherming is het sterkst bij 'Strict', maar 'Lax' biedt een goed evenwicht tussen veiligheid en gebruikerservaring bij legitieme cross-site navigatie.
4. Voeg Frame-Busting JavaScript-code toe
Voeg een JavaScript frame-buster toe in de <head>-sectie van je HTML-document. Dit script controleert of je pagina in een frame wordt geladen en verbreekt deze automatisch als dat het geval is. Het is een eenvoudige extra beveiligingslaag die werkt in de meeste moderne browsers. Zorg ervoor dat je frame-busting code solide is; vermijd verouderde technieken die aanvallers eenvoudig kunnen omzeilen met geavanceerde framing-methoden zoals double framing.
5. Gebruik window.confirm() voor Kritieke Acties
Voordat je gebruikers gevoelige transacties laat uitvoeren of accountwijzigingen laat maken binnen iframes, gebruik je de window.confirm()-methode om expliciete bevestiging af te dwingen. Dit creëert een dialoogvenster dat gebruikers verplicht actief te bevestigen wat ze gaan doen. Zelfs als andere beveiligingen worden omzeild, voegt dit extra drempels toe en vangt het per ongeluk klikken waarop aanvallers rekenen.
6. Test Regelmatig op Kwetsbaarheden
Maak lokaal een eenvoudig HTML-bestand met een iframe-tag die verwijst naar de URL van je site. Probeer deze te laden in je browser om te zien of je pagina in het frame verschijnt. Als deze succesvol laadt, ben je kwetsbaar en moet je bovenstaande headers implementeren. Als deze niet laadt, werken je beveiligingsmaatregelen. Gebruik geautomatiseerde kwetsbaarheidsscanners om te controleren op ontbrekende X-Frame-Options- en CSP-headers in je HTTP-response headers. Handmatig testen in combinatie met automatisering geeft je volledige dekking.
7. Monitor op Misconfiguraties
Gebruik tools die je HTTP-response headers direct vanuit de netwerk-tabbladen in je browser kunnen inspecteren. Controleer op X-Frame-Options- en Content-Security-Policy-headers op elke pagina. Pagina's zonder deze headers zijn potentiële doelwitten. Sommige geautomatiseerde scanners kunnen ook testen op defense bypasses en zwakke plekken in je implementatie signaleren.
8. Implementeer Dubbele Bevestigingsstappen
Laat je gebruikers dubbel bevestigen voordat ze een expliciete en zeer gevoelige actie mogen uitvoeren (zoals geld overmaken of accounts verwijderen). Vertrouw niet alleen op client-side scripts.
9. Informeer je Gebruikers
Informeer je medewerkers over clickjacking-aanvallen en hoe ze werken. Leer ze over onverwachte overlays, vreemde popups en plotselinge toestemmingsverzoeken. Welke maatregelen je ook neemt voor clickjacking-preventie, controleer deze aan de hand van het OWASP clickjacking cheat sheet en verifieer of je site echt beschermd is.
Conclusie
Clickjacking is tegenwoordig een veelvoorkomend probleem, maar maak je geen zorgen, je weet nu wat je kunt verwachten aan browser- en clientzijde. Servergestuurde protocollen kunnen het gebruik van browser-iframes beperken en beschermen tegen clickjacking-aanvallen.
Hoe effectief een clickjacking-aanval is, hangt ook af van het gedrag aan browserzijde. Als je je houdt aan de beste webstandaarden en veilig surfgedrag, zijn jij en je gebruikers waarschijnlijk veilig. Blijf waakzaam, controleer je browsercompliance en maak optimaal gebruik van X-Frame-Options en Content Security Policy voor voldoende bescherming!
Veelgestelde vragen
Clickjacking is wanneer aanvallers gebruikers misleiden om op dingen te klikken waarop ze niet van plan zijn te klikken. Een kwaadaardige website plaatst onzichtbare knoppen of links bovenop legitieme inhoud. Wanneer u denkt op een normale knop te klikken, activeert u eigenlijk iets dat erachter verborgen zit. De aanvaller bepaalt wat er vervolgens gebeurt. Uw klikken kunnen ongewenste acties veroorzaken, zoals het wijzigen van accountinstellingen, het plaatsen van inhoud of het autoriseren van machtigingen. U merkt niet eens dat het is gebeurd.
Ontbrekende X-Frame-Options headers zijn de belangrijkste reden waarom clickjacking werkt. Als uw website deze header niet instelt, kunnen aanvallers deze insluiten in iframes. Het niet gebruiken van Content Security Policy headers maakt u ook kwetsbaar. Sommige sites valideren gebruikersacties niet goed, waardoor het eenvoudig is om bezoekers te misleiden. Websites die geen anti-framingtechnieken toepassen zijn doelwitten. Oude frameworks zonder ingebouwde bescherming lopen extra risico. Applicaties die gevoelige handelingen uitvoeren hebben de juiste verdediging nodig, anders krijgt clickjacking vrij spel.
Ontwikkelaars moeten de X-Frame-Options-header instellen op DENY of SAMEORIGIN. Dit voorkomt dat browsers je site in iframes laden. Je kunt ook Content Security Policy gebruiken met de frame-ancestors-directive om framing te controleren. Controleer alle belangrijke gebruikersacties, vooral gevoelige zoals betalingen of het wijzigen van machtigingen. Voeg visuele indicatoren toe zodat gebruikers weten wanneer ze met echte knoppen werken. Test je site regelmatig om framingkwetsbaarheden te vinden. Gebruik JavaScript frame-busting code als extra bescherming als oudere browsers worden gebruikt.
X-Frame-Options is een HTTP-header die browsers vertelt of uw site in een frame mag worden geladen. Wanneer deze is ingesteld op DENY, wordt uw site nooit in een iframe geladen. SAMEORIGIN staat framing alleen toe vanaf hetzelfde domein. ALLOW-FROM laat u toe vertrouwde domeinen te specificeren die uw site mogen framen. Browsers respecteren deze header en blokkeren framingpogingen van andere sites. Aanvallers kunnen uw content niet overlappen zonder uw toestemming. Deze eenvoudige header verwijdert het belangrijkste hulpmiddel dat aanvallers gebruiken voor clickjacking, waardoor hun werk onmogelijk wordt.
U kunt uw response headers controleren met online tools of de ontwikkelaarstools van uw browser. Zoek naar de X-Frame-Options-header in de HTTP-responses van uw site. Als deze ontbreekt, bent u kwetsbaar. Probeer een test-HTML-bestand te maken dat uw site in een iframe laadt en kijk of deze wordt weergegeven. Als uw site binnen het iframe verschijnt, is clickjacking mogelijk. Handmatig testen helpt, maar geautomatiseerde beveiligingsscanners kunnen problemen sneller opsporen. Test zowel uw hoofddomein als subdomeinen. Vergeet niet opnieuw te testen na het aanbrengen van wijzigingen om te bevestigen dat uw oplossing daadwerkelijk werkt.
Voeg eerst de X-Frame-Options-header toe aan al uw responses. Stel deze in op DENY tenzij framing noodzakelijk is. Gebruik Content Security Policy-headers voor extra bescherming. Train gebruikers om alert te zijn op ongewoon gedrag of onverwachte prompts. Ga er niet van uit dat klikken altijd opzettelijk zijn van bezoekers. Implementeer CSRF-tokens voor belangrijke acties. Houd uw framework en libraries up-to-date omdat deze kwetsbaarheden patchen. Voer regelmatig beveiligingsaudits uit om misconfiguraties te detecteren. Test uw verdedigingen vaak zodat u weet dat ze daadwerkelijk werken wanneer aanvallen plaatsvinden.


