HTML Academy · Leçon

Sécurité des `iframe` : détournement de clics et `X-Frame-Options`

Prévenez les attaques par détournement de clics avec `X-Frame-Options` et CSP.

Leçon 2 sur 413 étapes

Sécurité des `iframe` : détournement de clics et `X-Frame-Options` est une leçon HTML Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage HTML Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours HTML Academy comprend 4 leçons au total.

Qu’est-ce que le détournement de clics ?

Le détournement de clics (détournement d’interface) intègre un site cible dans un cadre intégré transparent placé au-dessus d’une page leurre. L’utilisateur pense cliquer sur le leurre, mais clique en réalité sur la page authentifiée et masquée située en dessous — ce qui exécute des actions sur le site cible à son insu.

Mécanismes d’une attaque par détournement de clics

L’attaquant charge victim.com dans un cadre intégré transparent positionné au-dessus d’un bouton « Cliquez pour gagner ! ». Lorsque l’utilisateur clique, il clique en réalité sur le bouton « Supprimer le compte » de victim.com — en étant authentifié comme lui-même grâce au cookie de session de victim.com. Aucun hameçonnage n’est nécessaire.

En-tête X-Frame-Options

X-Frame-Options: DENY empêche le chargement de la page dans n’importe quel cadre intégré. X-Frame-Options: SAMEORIGIN autorise l’intégration uniquement par des pages de la même origine. Définissez cet en-tête côté serveur sur toutes les pages authentifiées afin d’empêcher le détournement de clics.

Directive frame-ancestors de Content-Security-Policy

Content-Security-Policy: frame-ancestors 'none' est le remplacement moderne et plus flexible de X-Frame-Options: DENY. frame-ancestors 'self' remplace SAMEORIGIN. frame-ancestors peut également autoriser des origines de confiance précises : frame-ancestors https://trusted.example.com.

Sortie des cadres par JavaScript

Les anciens mécanismes de sortie de cadre utilisaient JavaScript pour sortir des cadres. Ils sont facilement neutralisés par l’attribut sandbox, qui bloque le script de sortie du cadre. Utilisez toujours des en-têtes côté serveur (X-Frame-Options ou CSP frame-ancestors) — la sortie des cadres par JavaScript n’est pas fiable.

Quand autoriser l’intégration dans un cadre

Cas d’utilisation légitimes de l’intégration dans un cadre : intégrer votre propre contenu sur votre propre origine (SAMEORIGIN), ou autoriser un partenaire précis à intégrer votre module (frame-ancestors avec une origine précise). Concevez la politique pour autoriser ces cas tout en refusant tous les autres.

Approche combinée

Définissez à la fois X-Frame-Options (pour les anciens navigateurs) et CSP frame-ancestors (pour les navigateurs modernes) afin de maximiser la couverture. Lorsque les deux sont présents, frame-ancestors est prioritaire dans les navigateurs qui prennent en charge CSP. L’envoi des deux garantit une protection contre le détournement de clics avec tous les agents utilisateurs.

Risques des cadres intégrés de même origine

Même les cadres intégrés de même origine peuvent présenter des risques : une XSS persistante dans une page intégrée pourrait accéder à la page parente via parent.document si elles sont de même origine. Utilisez sandbox sans allow-same-origin pour les cadres intégrés de même origine qui n’ont pas besoin d’accéder à la page parente, afin de limiter les dommages causés par les vulnérabilités du contenu intégré.

Tester votre protection

Vérifiez la protection contre le détournement de clics : utilisez l’onglet réseau du navigateur pour contrôler la présence de X-Frame-Options ou de CSP frame-ancestors dans les en-têtes de réponse. Des outils comme securityheaders.com analysent les en-têtes. Créez une page HTML de test contenant un cadre intégré pointant vers votre site et vérifiez que son chargement échoue.

Intégrations de contenu tiers

Lorsque vous intégrez du contenu tiers (YouTube, Google Maps), c’est vous qui contrôlez le site intégrateur — assurez-vous que le service intégré autorise l’intégration dans sa propre politique X-Frame-Options. Vous ne pouvez pas intégrer un site qui empêche l’intégration — c’est intentionnel et cela protège les utilisateurs du service intégré.

CSP frame-ancestors dans les balises meta

Contrairement à la plupart des directives CSP, frame-ancestors ne peut pas être défini via une balise meta HTTP-equiv — il doit être transmis comme en-tête de réponse HTTP. Cela garantit que les attaquants ne peuvent pas supprimer la protection en manipulant le HTML intégré avant que le navigateur ne lise les balises meta.

Vérification des connaissances

Pourquoi le code JavaScript de sortie des cadres constitue-t-il une défense peu fiable contre le détournement de clics ?

Résumé

Le détournement de clics intègre des pages authentifiées dans des cadres intégrés transparents afin de détourner les clics. Défense : en-têtes côté serveur X-Frame-Options: DENY ou CSP frame-ancestors: none. Définissez les deux pour assurer la compatibilité entre navigateurs. La sortie des cadres par JavaScript n’est pas fiable — utilisez toujours des en-têtes HTTP. frame-ancestors permet une liste précise d’origines de confiance, contrairement à X-Frame-Options.

Gratuit pour commencer

Apprends HTML avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
40
Leçons
159

Questions Fréquemment Posées

La leçon « Sécurité des `iframe` : détournement de clics et `X-Frame-Options` » est-elle gratuite ?

Oui — le texte complet de « Sécurité des `iframe` : détournement de clics et `X-Frame-Options` » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours HTML Academy, passe à CoddyKit PRO. Le cours HTML Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Sécurité des `iframe` : détournement de clics et `X-Frame-Options` » ?

Prévenez les attaques par détournement de clics avec `X-Frame-Options` et CSP. Tu pratiques HTML Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer HTML Academy ?

Aucune expérience préalable n'est requise. HTML Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Sécurité des `iframe` : détournement de clics et `X-Frame-Options` » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon HTML Academy ?

Oui. Chaque leçon HTML Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. L’élément `iframe` : `src` et `sandbox`
  2. Sécurité des `iframe` : détournement de clics et `X-Frame-Options`
  3. Les éléments `embed` et `object`
  4. Chargement différé des `iframe`
← Retour à HTML Academy