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.