Cross-Origin-Embedder-Policy (COEP)
Contrôler dans quelles conditions une page peut intégrer des ressources provenant d’autres origines.
Comprendre Cross-Origin-Embedder-Policy
Une page web ne charge pas toujours toutes ses ressources depuis son propre serveur.
Elle peut par exemple utiliser :
- des images ;
- des scripts ;
- des polices de caractères ;
- des vidéos ;
- ou d’autres contenus provenant de services externes.
Cross-Origin-Embedder-Policy, souvent abrégé en COEP, permet d’imposer des règles plus strictes aux ressources provenant d’autres origines.
Qu’est-ce qu’une ressource cross-origin ?
Une ressource est dite cross-origin lorsqu’elle est chargée depuis une origine différente de celle de la page.
Par exemple, une page située sur :
https://example.com
peut charger une image depuis :
https://cdn.example.net/image.jpg
Les deux adresses appartenant à des origines différentes, cette image est une ressource cross-origin.
Pourquoi est-ce important ?
Les sites modernes utilisent souvent de nombreux services externes.
Plus une page dépend de contenus provenant d’autres origines, plus il devient important de savoir quelles ressources sont réellement autorisées à être intégrées.
COEP permet au navigateur de vérifier que certaines ressources externes respectent les conditions nécessaires avant de les intégrer à la page.
Configurer COEP
Le serveur transmet la politique grâce à l’en-tête HTTP :
Cross-Origin-Embedder-Policy: require-corp
Avec cette valeur, le navigateur applique des règles strictes aux ressources provenant d’autres origines.
Si une ressource externe ne respecte pas les conditions nécessaires, le navigateur peut refuser de la charger.
Les principales valeurs
unsafe-none
N’impose pas de règle d’intégration supplémentaire. C’est le comportement le moins restrictif.
require-corp
Exige que les ressources cross-origin soient autorisées de manière adaptée avant de pouvoir être utilisées par la page.
credentialless
Permet certains chargements cross-origin sans envoyer certaines informations d’identification associées à la requête, comme des cookies.
Que signifie credentialless ?
Lorsqu’un navigateur contacte un autre site, une requête peut parfois contenir des informations liées à l’utilisateur, comme certains cookies.
Avec :
Cross-Origin-Embedder-Policy: credentialless
certains chargements cross-origin peuvent être effectués sans transmettre ces informations d’identification.
COEP, CORP et isolation cross-origin
Le lien avec CORP
COEP et Cross-Origin-Resource-Policy (CORP) sont étroitement liés, mais ils ne jouent pas le même rôle.
COEP est défini par la page qui souhaite charger des ressources externes.
CORP, de son côté, est défini par le serveur qui fournit la ressource et indique dans quelles conditions celle-ci peut être utilisée.
On peut donc résumer ainsi : COEP impose des conditions côté page, tandis que CORP indique les règles côté ressource.
Exemple concret
Imaginons qu’une page sur :
https://example.com
utilise :
Cross-Origin-Embedder-Policy: require-corp
et tente de charger une image depuis :
https://images.autre-site.fr/photo.jpg
Le navigateur vérifie alors si cette ressource peut être utilisée dans le contexte demandé.
Si les conditions nécessaires ne sont pas remplies, l’image peut être bloquée, même si son adresse est accessible.
COEP et COOP
COEP est également souvent utilisé avec Cross-Origin-Opener-Policy (COOP) .
Ensemble, ces mécanismes permettent de renforcer l’isolation d’une page vis-à-vis des autres origines.
Cette isolation plus forte peut notamment être nécessaire pour certaines fonctionnalités web avancées.
Bonnes pratiques et limites
Bonnes pratiques
- Identifier toutes les ressources externes utilisées par le site.
-
Vérifier leur compatibilité
avant d’activer une politique
require-corp. - Vérifier la configuration CORP ou CORS des ressources provenant d’autres origines.
- Tester les images, scripts, polices, vidéos et autres contenus externes après modification de la politique.
- Examiner COEP avec COOP lorsqu’une isolation cross-origin renforcée est nécessaire.
- Réexaminer la politique lorsque de nouveaux services externes ou de nouvelles ressources sont ajoutés au site.
Une politique stricte peut bloquer des ressources légitimes
COEP agit directement sur les ressources provenant d’autres origines.
Une image, une police, une vidéo, un script ou un autre contenu externe peut cesser de fonctionner si le serveur qui le fournit ne respecte pas les règles nécessaires.
Il faut donc identifier les ressources externes utilisées et vérifier leur compatibilité avant d’appliquer une politique stricte.
Ce que COEP ne remplace pas
COEP contrôle certaines conditions d’intégration des ressources cross-origin, mais il ne sécurise pas l’ensemble du site à lui seul.
Il ne remplace notamment pas :
- Content-Security-Policy (CSP) ;
- CORP ;
- CORS ;
- HTTPS ;
- la sécurité du code et les autres protections nécessaires au site.
COEP constitue donc une couche supplémentaire d’isolation des ressources cross-origin et doit être configuré en tenant compte des ressources réellement utilisées par le site.