Cross-Origin-Resource-Policy (CORP)
Contrôler quels sites peuvent utiliser certaines ressources servies par un domaine.
Comprendre Cross-Origin-Resource-Policy
Un site web met à disposition de nombreuses ressources : images, polices de caractères, fichiers, contenus multimédias ou autres éléments chargés par les pages.
Toutes ces ressources n’ont pas forcément vocation à être utilisées librement par n’importe quel autre site.
Cross-Origin-Resource-Policy, souvent abrégé en CORP, permet au serveur d’indiquer au navigateur dans quels contextes une ressource peut être utilisée.
Une ressource peut ainsi être réservée :
- uniquement à la même origine ;
- aux différentes origines appartenant au même site ;
- ou être utilisable depuis d’autres origines.
Pourquoi est-ce important ?
Imaginons qu’un site fournisse des images ou des fichiers uniquement pour ses propres pages.
Sans règle particulière, un autre site peut parfois tenter de charger directement ces ressources depuis son propre contenu.
CORP permet d’indiquer au navigateur que certains de ces usages ne doivent pas être autorisés, ce qui contribue à mieux isoler les ressources entre plusieurs origines.
Configurer CORP
Le serveur transmet sa politique grâce à l’en-tête :
Cross-Origin-Resource-Policy: same-origin
Cette valeur indique au navigateur que la ressource doit être utilisée uniquement depuis la même origine.
Si une page provenant d’une autre origine tente de charger la ressource dans un contexte concerné par CORP, le navigateur peut refuser son utilisation.
Les principales valeurs
same-origin
Autorise l’utilisation de la ressource uniquement depuis la même origine. C’est la valeur la plus restrictive parmi les trois principales possibilités.
same-site
Autorise l’utilisation de la ressource depuis différentes origines appartenant au même site.
cross-origin
Autorise l’utilisation de la ressource depuis d’autres origines. C’est la valeur la plus permissive.
Même origine et même site : quelle différence ?
Ces deux notions sont proches, mais elles ne désignent pas exactement la même chose.
Par exemple :
https://www.example.com
et :
https://static.example.com
peuvent appartenir au même site, tout en étant deux origines différentes.
Une politique
same-site
peut donc être adaptée
lorsqu’un site répartit ses ressources
entre plusieurs sous-domaines.
CORP, CORS, COOP et COEP
CORP et CORS ne jouent pas le même rôle
Les noms peuvent sembler proches et les deux mécanismes concernent les échanges entre différentes origines, mais ils répondent à des besoins différents.
CORS permet notamment à un serveur d’autoriser une page provenant d’une autre origine à accéder au contenu d’une réponse.
CORP, de son côté, indique au navigateur dans quels contextes une ressource peut être utilisée lorsqu’elle est demandée depuis une autre origine.
Ces deux mécanismes ne sont donc pas interchangeables et peuvent être utilisés ensemble.
CORP fait partie d’un ensemble de protections d’isolation
CORP est également souvent associé à deux autres mécanismes :
- Cross-Origin-Opener-Policy (COOP) , qui concerne l’isolation entre certains contextes de navigation ;
- Cross-Origin-Embedder-Policy (COEP) , qui encadre les ressources externes qu’une page peut intégrer.
CORP, COOP et COEP répondent chacun à un objectif différent, mais peuvent être combinés pour renforcer l’isolation entre les différentes origines.
Exemple concret
Imaginons qu’une image soit disponible ici :
https://example.com/images/photo.jpg
Si elle est envoyée avec :
Cross-Origin-Resource-Policy: same-origin
le serveur indique au navigateur que cette ressource est destinée à être utilisée uniquement dans le contexte de la même origine.
Bonnes pratiques et limites
Bonnes pratiques
- Identifier quelles ressources doivent réellement être utilisables depuis d’autres origines.
- Utiliser une politique restrictive lorsque les ressources sont destinées uniquement au site qui les fournit.
- Tenir compte des sous-domaines utilisés pour héberger les ressources du site.
-
Choisir
same-origin,same-siteoucross-originselon l’usage réel de chaque ressource. - Tester les pages et intégrations légitimes après toute modification de la politique.
- Examiner CORP avec CORS, COOP et COEP lorsque le site utilise plusieurs origines ou services externes.
Une politique trop restrictive peut bloquer des usages légitimes
Si une image,
une police
ou un autre fichier
doit être utilisé depuis plusieurs origines,
une politique
same-origin
peut être trop restrictive.
Il ne faut pas pour autant supprimer la protection par facilité : il faut choisir la valeur correspondant au fonctionnement réellement attendu.
Ce que CORP ne remplace pas
CORP ne définit pas à lui seul l’ensemble des règles de sécurité entre plusieurs sites.
Il ne remplace notamment pas :
- Content-Security-Policy (CSP) ;
- CORS ;
- HTTPS ;
- COOP et COEP lorsque ces mécanismes sont nécessaires ;
- la sécurité générale du site et de ses ressources.
CORP constitue donc une protection supplémentaire pour contrôler l’utilisation cross-origin des ressources et doit être configuré en fonction de la manière dont ces ressources sont réellement utilisées.