Atténuer le hameçonnage de clics avec XFO ou CSP

Le clickjacking est une attaque malveillante qui consiste à inciter les utilisateurs à cliquer sur des liens ou des éléments d'interface utilisateur sur un site qui semble être fiable et familier. Pour ce faire, il est généralement nécessaire d'intégrer une partie ou la totalité du site de confiance dans le site malveillant à l'aide d'un <iframe>.

L'en-tête X-Frame-Options (XFO) et la directive frame-ancestors dans l'en-tête Content-Security-Policy (CSP) peuvent atténuer les attaques par hameçonnage de clic en contrôlant la manière dont un site peut être intégré dans un <iframe>.

Pourquoi l'audit Lighthouse échoue-t-il ?

L'audit est concluant si l'en-tête XFO est défini avec SAMEORIGIN ou DENY, ou si la directive frame-ancestors est définie sur l'en-tête CSP. L'audit échouera si aucune de ces règles de contrôle des trames n'est configurée.

Avertissement du rapport Lighthouse indiquant qu&#39;aucun en-tête de réponse CSP ou XFO n&#39;a été trouvé pour atténuer le hameçonnage de clics.
Avertissement du rapport Lighthouse indiquant qu'aucun en-tête de réponse CSP ou XFO n'a été détecté pour atténuer le piratage par clic.

Définir une règle de contrôle des cadres pour limiter le hameçonnage par clic

Une stratégie de contrôle des cadres doit être définie sur les en-têtes HTTP de la requête de document initiale. L'en-tête X-Frame-Options et l'instruction frame-ancestors dans Content-Security-Policy ne fonctionneront pas s'ils sont définis sur un élément <meta>.

En-tête XFO

Définir DENY ou SAMEORIGIN pour l'en-tête XFO permet de limiter les attaques par hameçonnage de clics:

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

La directive SAMEORIGIN ne permet l'affichage de la page que si tous les cadres ancêtres partagent la même origine que la page elle-même. À l'inverse, la directive DENY empêche l'affichage de la page dans un frame, quelle que soit l'origine du frame parent.

En-tête CSP

La directive frame-ancestors dans l'en-tête du fichier CSP définit les sites pouvant intégrer la page donnée dans un <frame>, <iframe>, <object> ou <embed>. Comme pour XFO, la directive frame-ancestors du CSP peut être utilisée pour atténuer les attaques de détournement de clic en la définissant sur self ou none:

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

Toutefois, la directive frame-ancestors est plus flexible que XFO, car elle peut définir des sources parentes spécifiques pouvant intégrer la page:

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

Ressources