Isolation des `iframe` et politique d’autorisations
Limitez le contenu intégré avec `sandbox` et `Permissions-Policy`.
Isolation des `iframe` et politique d’autorisations est une leçon HTML Academy gratuite sur CoddyKit. Ceci est la leçon 3 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.
Pourquoi utiliser des iframes en bac à sable ?
Un contenu non fiable dans une iframe (widgets tiers, aperçus de HTML soumis par les utilisateurs, jeux intégrés) ne devrait pas disposer de toutes les capacités du navigateur. L’attribut sandbox limite ce que l’iframe peut faire, réduisant les dommages si elle s’avère malveillante.
Bac à sable vide = restriction maximale
<iframe sandbox src="..."> sans valeur applique toutes les restrictions : pas de scripts, pas de formulaires, pas de fenêtres contextuelles, pas de navigation de niveau supérieur, pas de plugins, et une origine unique. Utilisez cette configuration comme point de départ, puis ajoutez uniquement ce dont le contenu intégré a besoin.
Ajouter des capacités
Les jetons du bac à sable réactivent certaines capacités : sandbox="allow-scripts allow-same-origin" autorise l’exécution de scripts et l’accès à la même origine. Chaque jeton assouplit une restriction : combinez uniquement l’ensemble minimal réellement nécessaire à l’iframe.
<iframe sandbox="allow-scripts allow-same-origin" src="https://embed.example.com/widget"></iframe>Jetons courants
allow-scripts active JS. allow-forms active l’envoi de formulaires. allow-popups active window.open. allow-same-origin évite de traiter l’iframe comme une origine unique (nécessaire pour localStorage). allow-top-navigation autorise la navigation de la fenêtre parente.
La combinaison dangereuse
Combiner allow-scripts et allow-same-origin pour une iframe que vous hébergez également donne à l’iframe un accès complet à votre origine, y compris la possibilité de supprimer son propre bac à sable. Ne combinez ces options que pour du contenu fiable ; pour du contenu non fiable, omettez allow-same-origin.
Politique des permissions
La politique des permissions (anciennement politique des fonctionnalités) contrôle les API du navigateur (caméra, microphone, géolocalisation, plein écran, lecture automatique) que la page et ses iframes peuvent utiliser. Définissez-la sur la page parente : Permissions-Policy: geolocation=() bloque la géolocalisation partout.
Autorisation par iframe
L’attribut allow d’une iframe remplace la politique de la page parente pour cette iframe : <iframe allow="camera; microphone"> autorise ces API dans l’iframe, même si la politique par défaut de la page parente les refuse.
<iframe
src="https://video-call.example.com"
allow="camera; microphone; fullscreen"
sandbox="allow-scripts allow-same-origin">
</iframe>Répertorier les permissions
Les spécifications évoluent constamment : caméra, microphone, géolocalisation, accéléromètre, gyroscope, magnétomètre, paiements, USB, MIDI, plein écran, lecture automatique, affichage image dans l’image, et des dizaines d’autres. Examinez la liste et refusez explicitement tout ce dont votre page n’a pas besoin.
Signaler les violations de la politique
Permissions-Policy signale les violations à un point de terminaison configuré, comme report-uri pour CSP. Utilisez cette possibilité pendant une migration : activez une politique stricte, observez ce qui ne fonctionne plus, puis assouplissez-la progressivement pour les fonctionnalités légitimes.
Isolation de l’origine
Pour les pages sensibles, définissez Cross-Origin-Opener-Policy: same-origin et Cross-Origin-Embedder-Policy: require-corp. Cela isole la page des fenêtres d’autres origines, la protégeant contre les attaques temporelles de type Spectre et permettant d’utiliser SharedArrayBuffer.
Défense en profondeur
Le bac à sable, Permissions Policy, CSP et COOP/COEP forment ensemble plusieurs couches de protection. Chacun protège contre une catégorie d’attaque différente. L’intégration de contenu tiers est suffisamment risquée pour qu’aucune mesure unique ne suffise : combinez-les afin qu’un contournement soit intercepté par une autre couche.
Tests
Utilisez le panneau Réseau et le panneau Problèmes de Chrome DevTools pour détecter les violations liées au bac à sable et aux permissions. De nombreuses violations sont silencieuses (l’API renvoie simplement undefined ou rejette la promesse) ; des points de terminaison de signalement explicites aident à les découvrir en production.
Vérification des connaissances
Pourquoi la combinaison sandbox="allow-scripts allow-same-origin" peut-elle être dangereuse pour une iframe hébergée sur votre propre origine ?
Résumé
Appliquez par défaut un bac à sable aux iframes et ajoutez uniquement les jetons nécessaires au contenu. Évitez allow-scripts+allow-same-origin pour le contenu non fiable. Utilisez Permissions Policy pour refuser les API puissantes à l’échelle du site et l’attribut allow de l’iframe pour accorder des exceptions. Combinez cette approche avec CSP et COOP/COEP pour une défense en profondeur.
Questions Fréquemment Posées
La leçon « Isolation des `iframe` et politique d’autorisations » est-elle gratuite ?
Oui — le texte complet de « Isolation des `iframe` et politique d’autorisations » 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 « Isolation des `iframe` et politique d’autorisations » ?
Limitez le contenu intégré avec `sandbox` et `Permissions-Policy`. 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 3 sur 4.
Combien de temps prend la leçon « Isolation des `iframe` et politique d’autorisations » ?
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
- Politique de sécurité du contenu : `meta http-equiv`
- XSS via `innerHTML` et prévention
- Isolation des `iframe` et politique d’autorisations
- HTTPS et intégrité des sous-ressources