Phase d'évaluation des iFrames anonymes: intégrer facilement des iFrames dans des environnements COEP

Arthur Sonzogni
Arthur Sonzogni

Les développeurs qui utilisent COEP peuvent désormais intégrer des iFrames tierces qui n'utilisent pas COEP eux-mêmes.

Pourquoi avons-nous besoin du COEP ?

Certaines API Web augmentent le risque d'attaques par canal auxiliaire comme Spectre. Pour atténuer ce risque, les navigateurs proposent un environnement isolé basé sur l'activation, appelé isolation multi-origine, qui nécessite, entre autres, de déployer COEP. Cela permet aux sites Web d'utiliser des fonctionnalités privilégiées, y compris SharedArrayBuffer, performance.measureUserAgentSpecificMemory() et des minuteurs haute précision avec une meilleure résolution.

Pour activer l'isolation cross-origin, les sites Web doivent envoyer les deux en-têtes HTTP suivants:

Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin

Défis liés à l'activation de COEP

Bien que l'isolation cross-origin offre aux pages Web une meilleure sécurité et la possibilité d'activer des fonctionnalités puissantes, le déploiement de COEP peut s'avérer difficile. L'un des plus grands défis est que toutes les iFrames multi-origines doivent également déployer COEP et CORP. Les iFrames sans ces en-têtes ne seront pas chargées par le navigateur.

Les iFrames sont généralement diffusés par un tiers pour lequel il peut être difficile de déployer COEP.

IFrame anonyme à la rescousse

C'est là que les iFrame anonymes entrent en jeu. En ajoutant l'attribut anonymous à l'élément <iframe>, l'iFrame est chargé à partir d'une autre partition de stockage éphémère et n'est plus soumis aux restrictions COEP.

Exemple :

<iframe anonymous src="https://example.com">

L'iFrame est créée dans un nouveau contexte éphémère et n'a accès à aucun des cookies associés au site Web racine. Il part d'un bac à cookies vide. De même, les API de stockage telles que LocalStorage, CacheStorage, IndexedDB, etc., chargent et stockent des données dans la nouvelle partition éphémère. La partition est limitée au document de premier niveau actuel et à l'origine de l'iframe. L'espace de stockage sera effacé une fois le document de niveau supérieur déchargé.

Les iFrames anonymes ne sont pas soumises aux règles d'intégration COEP. Cette approche reste sécurisée, car les données sont chargées à partir d'un nouveau contexte vide à chaque fois. Elles seront chargées sans que leurs données soient personnalisées. Ils ne contiennent que des données publiques, qui n’ont aucune valeur pour un attaquant.

Démo

Vous pouvez consulter une iFrame anonyme à l'adresse : https://anonymous-iframe.glitch.me/

S'inscrire à une phase d'évaluation

Pour nous assurer que les iFrame anonymes aident les développeurs à adopter l'isolation multi-origine, nous les mettons à disposition dans Chrome de la version 106 à la version 108 en tant qu'évaluation d'origine.

Inscrivez-vous à la phase d'évaluation pour l'origine afin d'autoriser votre site Web à utiliser des iFrames anonymes:

  1. Demandez un jeton pour votre origine.
  2. Utilisez le jeton de l'une des manières suivantes :
    • Dans votre code HTML : html <meta http-equiv="Origin-Trial" content="TOKEN_GOES_HERE">
    • Dans votre code JavaScript : js const meta = document.createElement('meta'); meta.httpEquiv = 'Origin-Trial'; meta.content = 'TOKEN_GOES_HERE'; document.head.append(meta);
    • Dans les en-têtes HTTP : text Origin-Trial: TOKEN_GOES_HERE
  3. Ajoutez un iFrame anonyme à votre page : html <iframe anonymous src="https://example.com">

Si vous avez des commentaires sur cette fonctionnalité, signalez un problème dans le dépôt GitHub.

Essai Origin Trial tiers

La phase d'évaluation de l'origine est également disponible pour les scripts tiers. Cela signifie qu'elle peut être activée par des scripts intégrés à la page.

Découvrez comment vous inscrire à une phase d'évaluation pour une origine tierce.

Questions fréquentes

Cette fonctionnalité sera-t-elle adoptée par d'autres navigateurs ?

Les iFrames imbriqués dans <iframe anonymous> sont-ils anonymes ?

Oui. Il est hérité. Une fois qu'un iFrame est anonyme, cela s'applique à tous les iFrames de la sous-arborescence entière, même sans attribut anonymous.

Les pop-ups créés à partir de <iframe anonymous> sont-ils également anonymes ?

Les pop-ups s'ouvrent comme si noopener était défini. Ils sont créés à partir d'un nouveau contexte de premier niveau standard et ne sont pas anonymes. Ils ne peuvent pas communiquer avec l'iFrame anonyme.

Ressources