CentralCSP
Reporting APIHeaders

Report-To header

Le header historique qui déclare les groupes de endpoints de reporting, remplacé par Reporting-Endpoints mais toujours requis pour NEL.

Dernière mise à jour:

Report-To est le header d'origine pour indiquer au navigateur où envoyer les reports. Il définit des groupes d'endpoints en JSON, avec cache et failover. Il a été remplacé par le header plus simple Reporting-Endpoints pour presque tous les usages, et le seul endroit où il reste nécessaire est le Network Error Logging (NEL).

Déprécié et non standard

Report-To n'est jamais devenu un standard du web et n'a été diffusé que dans les navigateurs fondés sur Chromium. Utilisez Reporting-Endpoints à la place, sauf pour NEL, qui exige toujours ce header.

Report-To: { "group": "csp-endpoint", "max_age": 10886400,
             "endpoints": [ { "url": "https://<Endpoint-ID>.report.centralcsp.com" } ] }

Valeurs et rôle de chacune

La valeur est du JSON : un tableau d'objets groupe avec les crochets externes omis, de sorte qu'un groupe unique s'écrit sans [ ] autour. Chaque groupe a ces membres :

MembreStatutRôle
group⚠️ DépréciéLe nom qu'une politique référence, l'équivalent historique d'un nom d'endpoint dans Reporting-Endpoints.
max_age⚠️ DépréciéSecondes de mise en cache de cette configuration, le modèle ambiant que la v1 a abandonné.
endpoints⚠️ DépréciéUn tableau d'objets URL, optionnellement avec priority et weight pour le failover.
include_subdomains⚠️ DépréciéAppliquer aussi la configuration aux sous-domaines.

Valeurs non sûres à éviter

Les endpoints doivent être en HTTPS. Un max_age long met la configuration en cache et un attaquant capable de poser des headers sur une réponse pourrait maintenir des endpoints obsolètes en vie, donc dimensionnez-le raisonnablement.

Comme pour tout endpoint de reporting, ne le pointez que vers un hôte de confiance ; les corps de report peuvent porter des URL et des échantillons de contenu.

Pourquoi ce header existe

Report-To a été le premier mécanisme de livraison de la Reporting API. Son modèle de groupement, de cache et de répartition de charge s'est révélé dépasser ce que les autres moteurs de navigateur voulaient standardiser, c'est pourquoi le plus simple Reporting-Endpoints (v1) l'a remplacé. Voir Report-To vs Reporting-Endpoints.

Ce contre quoi il protège

Rien directement. Comme Reporting-Endpoints, il n'applique aucune politique ; c'est le transport qui rend observables les violations de politique et les erreurs réseau. La valeur, c'est la visibilité, pas l'application.

Contournements connus et limites

Il est réservé à Chromium et n'a jamais été diffusé dans Firefox ou Safari, et il est remplacé pour tout sauf NEL. Considérez-le comme historique : ne l'utilisez que là où vous y êtes contraint.

Risques d'une mauvaise configuration

Les échecs sont silencieux. Une valeur JSON malformée désactive le reporting sans erreur, et un nom de group qui ne correspond pas à ce qu'une politique (ou le header NEL) référence signifie que ces reports ne vont nulle part.

Recommandation

Utilisez Reporting-Endpoints pour chaque politique, CSP, COOP, COEP, Permissions-Policy et le reste. Gardez Report-To pour une seule tâche : le Network Error Logging lit toujours son groupe d'endpoints depuis ce header, un site qui utilise NEL envoie donc les deux headers ensemble.

Report-To: {"group":"nel-group","max_age":31536000,"endpoints":[{"url":"https://<Endpoint-ID>.report.centralcsp.com"}]}
NEL: {"report_to":"nel-group","max_age":31536000,"include_subdomains":true}

Comment le configurer

Le seul cas qui exige encore Report-To est NEL. Le membre report_to du header NEL nomme un groupe défini ici, et les deux headers sont envoyés ensemble. Pointez l'endpoint du groupe vers le reporting CentralCSP pour collecter le flux d'erreurs réseau aux côtés de vos autres reports.

Report-To: {"group":"nel-group","max_age":31536000,"endpoints":[{"url":"https://<Endpoint-ID>.report.centralcsp.com"}]}
NEL: {"report_to":"nel-group","max_age":31536000,"include_subdomains":true,"failure_fraction":1.0}

Prise en charge par les navigateurs

Navigateurs fondés sur Chromium uniquement (Chrome, Edge et autres) ; il n'a jamais été diffusé dans Firefox ou Safari, et la spécification W3C Reporting ne le définit pas. Pour tout ce qui n'est pas NEL, utilisez plutôt Reporting-Endpoints.

Voir aussi

Sources

On this page