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 telles que 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ées par un tiers pour lequel il peut être difficile de déployer COEP.
IFrame anonyme à la rescousse
C'est là que les iFrames anonymes entrent en jeu. En ajoutant l'attribut anonymous
à l'élément <iframe>
, l'iFrame est chargée à partir d'une partition de stockage éphémère différente et n'est plus soumise 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 de premier niveau. Il commence à partir d'un pot de biscuits 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. Elles ne contiennent que des données publiques, qui ne sont pas utiles à un pirate informatique.
Démo
Vous pouvez consulter une iFrame anonyme à l'adresse : https://anonymous-iframe.glitch.me/
S'inscrire à un essai de création
Pour nous assurer que les iFrames anonymes aident les développeurs à adopter l'isolation multi-origine, nous les rendons disponibles dans Chrome de la version 106 à la version 108 en tant qu'essai d'origine.
Inscrivez-vous à la phase d'évaluation pour l'origine afin d'autoriser votre site Web à utiliser des iFrames anonymes:
- Demandez un jeton pour votre origine.
- 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
- Dans votre code HTML :
- 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'il peut être activé par des scripts intégrés à la page.
Découvrez comment vous inscrire à un essai d'origine tierce.
Questions fréquentes
Cette fonctionnalité sera-t-elle adoptée par d'autres navigateurs ?
- Demande Mozilla de position : En attente
- Demande Webkit de position : Aucun signal
- TAG du W3C Demande de position : satisfaite
Les iFrames imbriquées dans <iframe anonymous>
sont-elles anonymes ?
Oui. Il est hérité. Une fois qu'une iFrame est anonyme, cela s'applique à toutes les iFrames de l'ensemble du sous-arbre, 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. Elles sont créées à partir d'un nouveau contexte de premier niveau standard et ne sont pas anonymes. Ils ne peuvent pas communiquer avec l'iFrame anonyme.
Ressources
- Isoler votre site Web de manière inter-origine à l'aide de COOP et COEP
- Pourquoi avez-vous besoin de l'isolation multi-origine pour bénéficier de fonctionnalités puissantes ?
- Guide pour activer l'isolation multi-origine
- Mises à jour de SharedArrayBuffer dans Chrome 88 pour Android et Chrome 92 pour ordinateur
- Charger des ressources entre origines sans en-têtes CORP à l'aide de
COEP: credentialless