iframe sandbox : ce que chaque jeton autorise

Attribut sandbox d'une iframe

iframe sandbox : chaque jeton, avec une démo à bascules | We.Inc

Activez et désactivez chaque jeton sandbox d'une iframe et voyez scripts, formulaires, popups et alertes marcher ou s'arrêter. Chaque jeton expliqué.

Un attribut sandbox vide verrouille fortement une iframe : pas de scripts, pas d'envoi de formulaire, pas de popups, pas d'alertes, et une origine opaque qui échoue à toute vérification de même origine. Chaque jeton allow- que vous ajoutez rend un pouvoir. Basculez les jetons ci-dessous pour voir exactement ce qui casse, puis copiez le plus petit ensemble dont votre intégration a besoin.

Cas courants et jetons nécessaires

L'attribut sandbox est le gain de sécurité le moins coûteux que vous puissiez ajouter à une iframe qui affiche du contenu que vous n'avez pas écrit : du HTML d'utilisateur, un emplacement publicitaire, l'aperçu d'une page générée. Le plus difficile est de savoir de quels jetons une intégration donnée a besoin, car un jeton manquant échoue généralement en silence. Le cadre en direct ci-dessous exécute de vrais tests, pour que vous voyiez chaque échec au lieu de deviner. Pour les bases de l'intégration, commencez par notre guide sur les iframes HTML et la vidéo.

Questions fréquentes

Que fait un attribut sandbox vide ?

Il applique toutes les restrictions à la fois. Le document encadré ne peut pas exécuter de scripts, envoyer de formulaires, ouvrir de popups ni de fenêtres modales, naviguer dans la fenêtre principale, verrouiller le pointeur ou l'orientation, lancer de téléchargements, et il est considéré comme venant d'une origine unique qui ne correspond jamais à aucune autre.

Pourquoi allow-scripts avec allow-same-origin est-il dangereux ?

Quand le document encadré est sur la même origine que votre page, ces deux jetons ensemble permettent à son script de remonter et de supprimer l'attribut sandbox, si bien qu'il n'est finalement pas plus sûr qu'une iframe ordinaire. L'association convient pour du contenu provenant d'une origine réellement différente, qui ne peut de toute façon pas toucher votre page.

Mon formulaire en sandbox ne fait rien quand j'appuie sur envoyer. Pourquoi ?

Sans allow-forms, le formulaire s'affiche toujours, mais l'envoyer ne déclenche aucune validation et n'envoie aucune donnée à un serveur. Ajoutez allow-forms. Si le formulaire dépend aussi des cookies ou du stockage de son propre site, il aura également besoin de allow-same-origin.

Une iframe en sandbox peut-elle rediriger toute ma page ?

Non, sauf si vous ajoutez allow-top-navigation, ou allow-top-navigation-by-user-activation, qui ne le permet qu'après un clic de la personne dans le cadre. Laisser les deux de côté empêche une intégration de remplacer votre page par un autre site.

Le sandbox suffit-il pour afficher du HTML non fiable en toute sécurité ?

C'est la couche principale, pas la seule. Servez le contenu non fiable depuis une origine séparée ou via srcdoc, laissez allow-same-origin désactivé quand les scripts sont activés, et ajoutez une Content-Security-Policy au document encadré si vous contrôlez la façon dont il est servi.

Ce que change l'origine opaque

Les échecs silencieux sont la norme

sandbox, allow et CSP ont des rôles différents

Tous les jetons sandbox

Les jetons sont séparés par des espaces et insensibles à la casse. Tout ce qui n'est pas listé reste bloqué.

Jetons sandbox et ce que chacun autorise

Modèles à copier

Aperçu de HTML utilisateur avec les scripts désactivés

Le bouton dans le cadre a un gestionnaire onclick, mais avec un sandbox vide il ne s'exécute jamais.

Widget tiers sur une autre origine

Le widget exécute son propre script et envoie son formulaire, et les liens peuvent ouvrir de vrais onglets. Il ne peut pas rediriger votre page.

Les mêmes restrictions envoyées dans un en-tête de réponse

Un serveur peut mettre sa propre page en sandbox avec la CSP, ce qui s'applique même quand la page est ouverte directement plutôt qu'encadrée.

Basculez les jetons et testez le cadre

Le cadre ci-dessous est un document srcdoc. allow-same-origin n'est pas proposé ici, car un cadre srcdoc partagerait alors l'origine de cette page, précisément l'association contre laquelle les conseils mettent en garde.

Les scripts sont bloqués, donc rien dans ce cadre ne peut s'exécuter.

Jetons

Attribut actuel

Cadre de test sandbox

Les scripts se sont exécutés. L'origine de ce cadre est : {v}

Envoyer le formulaire

Ouvrir une popup

Afficher une alerte

Formulaire envoyé.

Le formulaire n'a pas été envoyé.

Popup ouverte (puis refermée).

Popup bloquée : window.open a renvoyé null.

L'alerte a été affichée.

Alerte bloquée : elle est revenue aussitôt sans s'afficher.

Bonjour depuis le cadre en sandbox

Commencer gratuitement · Sans carte bancaire

Voir aussi: Guides

Produit

Pour qui

Fonctionnalités

Ressources

Entreprise

Plan du site