HTTP-headers zijn een soort metadata die worden verzonden met webverzoeken en antwoorden. De informatie die ze verstrekken kan belangrijk zijn of gewoon informatief zijn. Beveiligingsheaders zijn een subset van de "Responseheaders" die door de webserver kunnen worden ingesteld. Ze zijn een van de functies die kunnen helpen bij het oplossen van een aantal beveiligingsproblemen. Een van de beveiligingsheaders, genaamd "X-Frame-Options", is ontworpen om clickjacking-aanvallen te voorkomen.
Click-jacking
Click-jacking, ook bekend als "User Interface Redressing", is een probleem waarbij een aanvaller een gebruiker kan misleiden om op iets te klikken dat niet is wat het lijkt te zijn. Voor websites wordt dit gedaan door een transparante website over een zichtbare te leggen. Bij dit type aanval denkt de gebruiker dat hij interactie heeft met de zichtbare website, maar in werkelijkheid beïnvloeden ze onbewust de transparante website.
Een aanvaller kan bijvoorbeeld een website opzetten die het waarschijnlijk maakt dat een gebruiker op een knop klikt, misschien een afspeelknop voor een video. In een transparante laag over de bovenkant van die webpagina bevindt zich een tweede webpagina, zoals de webpagina om uw Facebook-account te verwijderen met de knop "Account verwijderen" direct boven de afspeelknop. In dit scenario, wanneer de gebruiker op afspelen probeert te klikken, klikt hij daadwerkelijk op de knop om zijn Facebook-account te verwijderen.
Click-jacking is afhankelijk van de mogelijkheid om de doelwebsite boven op de dummy-website weer te geven, via een proces dat "Framing" wordt genoemd. Framing maakt gebruik van het HTML-element "iframe" waarmee een hele afzonderlijke webpagina binnen een andere pagina kan worden geladen. Door de doelwebpagina in een frame te laden, deze zorgvuldig te positioneren en transparant te maken, zal het slachtoffer zich er totaal niet van bewust zijn dat ze worden misleid om een actie uit te voeren.
X-Frame-opties
De HTTP-responsheader "X-Frame-Options" is een optionele functie die kan worden ingesteld voor websites in de serverconfiguratiebestanden. X-Frame-Options voorkomt dat webpagina's in iframes worden geladen, waardoor deze niet over een andere website worden gelegd. De browser van het slachtoffer past daadwerkelijk de beveiligingscontrole toe, dit komt omdat alle browsers de X-Frame-Options-header respecteren en zullen weigeren webpagina's te laden met de header in een frame.
Met de koptekst kan de website-eigenaar configureren hoe beperkend de instelling is. Er zijn twee instellingen: "X-Frame-Options: DENY" voorkomt dat een beveiligde webpagina ooit wordt geframed. De andere optie, "X-Frame-Options: SAMEORIGIN", staat toe dat beveiligde webpagina's worden geframed, alleen als de pagina die het frame laadt dezelfde domeinnaam heeft. In dit geval kunt u een frame op uw eigen website laden, maar niemand anders kan het op die van hen laden.