Les développeurs qui utilisent COEP peuvent désormais intégrer des iFrames tiers qui n'utilisent pas COEP eux-mêmes.
Pourquoi nous avons besoin du COEP
Certaines API Web augmentent le risque d'attaque par canal auxiliaire, comme Spectre. Pour atténuer ce risque, les navigateurs proposent un environnement isolé facultatif appelé isolation multi-origine, qui nécessite, entre autres, le déploiement de COEP. Cela permet aux sites Web d'utiliser des fonctionnalités privilégiées, y compris SharedArrayBuffer
, performance.measureUserAgentSpecificMemory()
, et des minuteurs de haute précision avec une meilleure résolution.
Pour activer l'isolation multi-origine, 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 du COEP
Bien que l'isolation multi-origine renforce la sécurité des pages Web et permet d'activer des fonctionnalités puissantes, le déploiement du COEP peut s'avérer difficile. L'un des plus grands défis est que tous les iFrames multi-origines doivent également déployer COEP et CORP. Les iFrames sans ces en-têtes ne seront pas chargés par le navigateur.
Les iFrames sont généralement diffusés par un tiers pour lequel il peut être difficile de déployer COEP.
Solution iFrame anonyme
C'est là qu'un iFrame anonyme entre 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éé 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 cookie jar 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 premier niveau déchargé.
Les iFrame anonymes ne sont pas soumis aux règles d'intégration COEP. Cette approche reste sécurisée, car elles sont chargées à partir d'un nouveau contexte vide à chaque fois. Elles seront chargées sans que leurs données ne soient personnalisées. Ils ne contiennent que des données publiques, qui ne sont pas précieuses pour un attaquant.
Démonstration
Vous pouvez découvrir un iFrame anonyme à l'adresse suivante : 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 phase d'évaluation.
Inscrivez-vous à la phase d'évaluation pour permettre à votre site Web d'utiliser des cadres iFrame 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 votre problème dans le dépôt GitHub.
Phase d'évaluation tierce
La phase d'évaluation est également disponible pour les scripts tiers. Cela signifie qu'elle peut être activée par des scripts intégrés à la page.
Leran en savoir plus sur l'inscription à une phase d'évaluation tierce.
Questions fréquentes
Cette fonctionnalité sera-t-elle adoptée par d'autres navigateurs ?
- Demande de position par Mozilla : En attente
- Requête de position du Webkit : Aucun signal
- W3C TAG Demande de positionnement : Satisfait
Les iFrames imbriqués dans <iframe anonymous>
sont-ils anonymes ?
Oui. Elle est héritée. 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 standard de premier niveau et ne sont pas anonymes. Ils ne peuvent pas communiquer avec l'iFrame anonyme.
Ressources
- Isoler votre site Web multi-origine avec COOP et COEP
- Pourquoi est-il nécessaire d'être isolé multi-origine pour bénéficier de fonctionnalités puissantes ?
- Guide pour activer l'isolation multi-origine
- Mises à jour de SharedArrayBuffer dans Android 88 et Chrome 92 pour ordinateur
- Charger des ressources multi-origines sans en-têtes CORP avec
COEP: credentialless