Aller au contenu
script-src.com
script-src.com
EN / FR

Remontée des rapports de violation

Comment collecter les violations de script-src en production avec Reporting-Endpoints et report-to, ainsi que l'ancienne directive report-uri.

La remontée des rapports de violation indique au navigateur d'envoyer un rapport en POST chaque fois que votre politique bloque quelque chose. C'est ainsi que vous trouvez les vraies violations sur le trafic de production au lieu de deviner à partir de tests locaux, et c'est ainsi que vous déployez en toute sécurité un script-src plus strict.

D'abord le mode rapport seul

Avant d'appliquer une nouvelle politique, déployez-la en mode rapport seul. Le navigateur rapporte les violations mais ne bloque rien, donc rien ne casse pendant que vous observez :

Content-Security-Policy-Report-Only:
  script-src 'self' 'nonce-r4nd0m';
  report-to csp-endpoint

Laissez le mode rapport seul actif jusqu'à ce que les rapports cessent de faire apparaître des scripts légitimes, puis basculez la même politique vers l'en-tête Content-Security-Policy appliqué.

La configuration moderne : Reporting-Endpoints + report-to

Déclarez des points de terminaison nommés avec l'en-tête Reporting-Endpoints, puis pointez la politique vers l'un d'eux par son nom avec report-to :

Reporting-Endpoints: csp-endpoint="https://reports.example.com/csp"
Content-Security-Policy:
  script-src 'self' 'nonce-r4nd0m';
  report-to csp-endpoint

Lorsqu'un script est bloqué, le navigateur envoie un rapport JSON à ce point de terminaison décrivant la directive violée, la ressource bloquée et l'URL du document.

L'ancienne directive report-uri

report-to n'est pas encore honoré partout, donc de nombreux sites envoient les deux :

Content-Security-Policy:
  script-src 'self' 'nonce-r4nd0m';
  report-uri https://reports.example.com/csp;
  report-to csp-endpoint

report-uri est déprécié mais reste largement pris en charge. Envoyer les deux couvre les navigateurs qui n'en comprennent qu'un seul. Là où les deux sont présents et pris en charge, report-to l'emporte.

Ce que contient un rapport

Un rapport script-src identifie la directive qui a été violée, le document qui l'a déclenchée, et l'URL du script bloqué ou un marqueur en ligne. Ajoutez 'report-sample' à la directive pour inclure un court extrait du code fautif, ce qui rend les violations en ligne bien plus faciles à localiser.

Collecter les rapports

Vous avez besoin d'un point de terminaison qui accepte le POST du navigateur, l'analyse et vous permet de regrouper et de rechercher les violations. Vous pouvez héberger le vôtre, ou utiliser un service de remontée hébergé pour vous éviter l'analyse, le stockage et le filtrage du bruit. CentralCSP fournit un point de terminaison de remontée pour les violations CSP si vous préférez ne pas construire cette partie vous-même.

Quel que soit votre choix, le point de terminaison de remontée est ce qui transforme un script bloqué d'un échec invisible en quelque chose que vous pouvez mesurer et corriger.