Beperk clickjacking met XFO of CSP

Clickjacking is een kwaadaardige aanval waarbij gebruikers worden misleid om op links of UI-elementen te klikken op een site die een vertrouwde en bekende site lijkt. Dit wordt doorgaans bereikt door een deel of de gehele vertrouwde site in de kwaadaardige site in te sluiten met behulp van een <iframe> .

De X-Frame-Options (XFO)-header en de frame-ancestors richtlijn in de Content-Security-Policy (CSP)-header kunnen clickjacking-aanvallen beperken door te bepalen hoe een site kan worden ingesloten in een <iframe> .

Hoe de Lighthouse-audit mislukt

De audit zal slagen als de XFO-header is ingesteld met SAMEORIGIN of DENY , of als de frame-ancestors -richtlijn is ingesteld op de CSP-header. De audit mislukt als geen van deze framecontrolebeleidsregels is geconfigureerd.

Lighthouse-rapport waarschuwt dat er geen CSP- of XFO-reactieheader is gevonden die clickjacking kan tegengaan.
Lighthouse-rapport waarschuwt dat er geen CSP- of XFO-reactieheader is gevonden die clickjacking kan tegengaan.

Hoe u een framecontrolebeleid instelt om clickjacking tegen te gaan

Er moet een framecontrolebeleid worden ingesteld op de HTTP-headers van de initiële documentaanvraag. De X-Frame-Options header en de frame-ancestors -richtlijn in Content-Security-Policy werken niet als ze zijn ingesteld op een <meta> -element.

XFO-koptekst

Als u DENY of SAMEORIGIN instelt voor de XFO-header, worden clickjacking-aanvallen verminderd:

X-Frame-Options: SAMEORIGIN
X-Frame-Options: DENY

De SAMEORIGIN -richtlijn staat toe dat de pagina alleen wordt weergegeven als alle voorouderframes dezelfde oorsprong hebben als de pagina zelf. Omgekeerd verhindert de DENY -richtlijn dat de pagina in een frame wordt weergegeven, ongeacht de oorsprong van het bovenliggende frame.

CSP-kop

De frame-ancestors -richtlijn binnen de CSP-header definieert welke sites de gegeven pagina mogen insluiten in een <frame> , <iframe> , <object> of <embed> . Net als bij XFO kan de CSP frame-ancestors -richtlijn worden gebruikt om clickjacking-aanvallen te verminderen door deze in te stellen op self of none :

Content-Security-Policy: frame-ancestors 'self';
Content-Security-Policy: frame-ancestors 'none';

De frame-ancestors richtlijn is echter flexibeler dan XFO omdat deze specifieke bovenliggende bronnen kan instellen die de pagina kunnen insluiten:

Content-Security-Policy: frame-ancestors 'self' https://example.com;

Bronnen