Referrer-Policy
Utilisation
Lorsqu’un navigateur suit un lien ou charge une sous-ressource, il envoie normalement un en-tête Referer contenant l’URL de la page d’origine. L’en-tête Referrer-Policy donne aux exploitants de sites le contrôle sur la portion de l’URL partagée, voire sur le fait d’envoyer ou non l’en-tête Referer.
Les sites sensibles à la confidentialité suppriment les informations de référent afin d’éviter de divulguer à des tiers des paramètres de requête, des chemins ou des détails d’origine. La politique s’applique aux navigations, aux requêtes de sous-ressources et aux opérations de préchargement lancées depuis la page.
Une liste de politiques séparées par des virgules sert de chaîne de repli. Le navigateur retient la dernière politique de la liste qu’il prend en charge, ce qui facilite les déploiements compatibles avec les évolutions futures.
Définir la politique
Il existe trois mécanismes pour définir la politique de référent :
Les attributs au niveau de l’élément l’emportent sur la balise meta au niveau de la page, qui l’emporte elle-même sur l’en-tête HTTP. L’en-tête HTTP est la méthode la plus fiable, car la politique prend effet avant l’analyse du moindre code HTML.
no-referrer
La directive no-referrer supprime entièrement l’en-tête Referer. Aucune information d’URL n’est envoyée avec les requêtes issues de la page.
no-referrer-when-downgrade
La directive no-referrer-when-downgrade envoie l’URL complète (origine, chemin et chaîne de requête) pour les requêtes utilisant le même protocole. Lorsque la requête entraîne un abaissement du niveau de sécurité (HTTPS vers HTTP), l’en-tête Referer est omis.
origin
La directive origin n’envoie que la partie origine de l’URL (schéma, hôte et port). Le chemin et la chaîne de requête sont retirés de toutes les requêtes.
origin-when-cross-origin
La directive origin-when-cross-origin envoie l’URL complète pour les requêtes de même origine. Pour les requêtes multi-origines ou les abaissements de protocole, seule l’origine est envoyée.
same-origin
La directive same-origin envoie l’URL complète pour les requêtes de même origine et omet entièrement l’en-tête Referer pour les requêtes multi-origines.
strict-origin
La directive strict-origin n’envoie que l’origine, et uniquement lorsque le niveau de sécurité du protocole reste identique ou s’améliore (HTTPS vers HTTPS, ou HTTP vers HTTP). Un abaissement de protocole supprime l’en-tête.
strict-origin-when-cross-origin
La directive strict-origin-when-cross-origin envoie l’URL complète pour les requêtes de même origine, n’envoie que l’origine pour les requêtes multi-origines au même niveau de sécurité, et omet l’en-tête en cas d’abaissement de protocole. C’est la politique par défaut des navigateurs modernes lorsque aucune Referrer-Policy n’est définie.
unsafe-url
La directive unsafe-url envoie l’URL complète (origine, chemin et chaîne de requête) avec chaque requête, quels que soient la destination et le protocole. C’est l’option qui expose le plus d’informations, rarement appropriée en production.
Exemple
Une politique par défaut stricte n’envoyant que l’origine lors des navigations multi-origines :
Referrer-Policy: strict-origin-when-cross-origin
Une configuration axée sur la confidentialité qui supprime toutes les données de référent :
Referrer-Policy: no-referrer
Une chaîne de repli où le navigateur retient strict-origin s’il le prend en charge, et se rabat sinon sur no-referrer :
Referrer-Policy: no-referrer, strict-origin