Sans identifiants iFrame: intégrez facilement des iFrames dans des environnements COEP

Arthur Sonzogni
Arthur Sonzogni

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

L'iFrame sans identifiant est activé par défaut à partir de la version 110 de Chrome. Il permet de résoudre les problèmes les plus courants rencontrés par les développeurs qui utilisent une règle COEP (Cross-Origin-Embedder-Policy), à savoir l'intégration d'iFrames tiers qui ne définissent pas le COEP.

Pourquoi nous avons 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 de déployer COEP. L'isolation multi-origine permet aux sites Web d'utiliser des fonctionnalités privilégiées comme SharedArrayBuffer, performance.measureUserAgentSpecificMemory() et des minuteurs haute précision avec une meilleure résolution.

Pour activer l'isolation multi-origine, les sites Web doivent envoyer les en-têtes HTTP suivants:

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

COEP:credentialless peut également être utilisé à la place de require-corp. Consultez la documentation pour en savoir plus.

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 principaux défis est que tous les iFrames multi-origines doivent déployer COEP et CORP. Les iFrames sans ces en-têtes ne seront pas chargés par le navigateur.

À la rescousse de l'iFrame sans identifiant

Nous lançons <iframe credentialless> pour vous aider à intégrer des iFrames tiers qui ne définissent pas de COEP. En ajoutant l'attribut credentialless à l'élément <iframe>, l'iFrame est chargé à partir d'un autre contexte vide. Plus précisément, il est chargé sans cookies. Cela permet de supprimer la restriction COEP.

Exemple :

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

Cet 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. Au lieu de cela, il commence par un bocal à 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. Cet espace de stockage est effacé une fois le document de premier niveau déchargé.

Les iFrames sans identifiants ne sont pas soumis aux règles d'intégration COEP. Ils sont tout de même sécurisés: ils sont constamment chargés depuis un nouveau contexte vide, et ne doivent donc pas contenir de données personnalisées, car c'est ce que cherchent les pirates informatiques. Si un iFrame ne contient que des données publiques, il n'est pas utile pour un pirate informatique.

Démonstration

Vous pouvez regarder une démonstration d'un iFrame sans identifiant.

Questions fréquentes

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

Un élément <iframe> est-il imbriqué dans un identifiant <iframe credentialless> ?

Oui. Elle est héritée. Une fois qu'un iFrame est dépourvu d'identifiants, cela s'applique à tous les iFrames de la sous-arborescence entière, même sans attribut credentialless.

Les pop-ups créés à partir de <iframe credentialless> sont-ils également sans identifiant ?

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

Comment détecter que le document a été intégré dans un iFrame sans identifiant ?

window.credentialless est "true" dans un iFrame sans identifiant, et "false" dans le cas contraire. Sa valeur est undefined dans un navigateur Web qui n'est pas compatible avec <iframe credentialless>.

Ressources