Nouveau : CentralCSP v2 est disponible, avec la prise en charge complète de la Reporting API. Lire le changelog

Outils

Vérificateur Reporting API

Entrez une URL et voyez où partent réellement ses rapports navigateur : Reporting-Endpoints, Report-To, le report-uri CSP de repli et NEL, fonctionnalité par fonctionnalité.

Vérifier une URL

Inspectez la configuration de reporting d'un site : points de collecte, reporting par fonctionnalité et politiques.

Besoin d'auditer plus que le reporting ?Lancer le scanner d'en-têtes de sécurité

Exemple de résultat

À quoi ressemble une vérification

Quels endpoints sont déclarés, quelles fonctionnalités leur envoient réellement des rapports, et quoi corriger en premier. Un Aucun rouge signifie que le navigateur génère des rapports et les perd tous silencieusement.

Points de collecte

Points de collecte déclarés par le site, et s'ils sont utilisés.

Point de collecteURLStatutDéclaré dans
csp-endpointUtiliséreporting-endpoints
defaultUtiliséreporting-endpoints
legacy-analyticsInutiliséreport-to

Fonctionnalités

Statut de reporting de chaque fonctionnalité de sécurité et où ses rapports sont envoyés.

FonctionnalitéPrésentModePoint de collecteURLs de reporting
Content Security PolicyPrésent
Appliqué
csp-endpoint
Cross-Origin-Opener-PolicyPrésent
Report-Only
coop
Aucun
Permissions PolicyPrésent
Appliqué
défaut (repli)
Network Error LoggingAbsent

Constats et recommandations

Problèmes et recommandations de qualité pour la configuration de reporting.

Guide

Comprendre le reporting navigateur

La Reporting API est le mécanisme par lequel le navigateur collecte les violations de politique, les erreurs réseau, les dépréciations et les crashs, puis les livre hors bande à un endpoint que vous déclarez dans un en-tête de réponse. Le navigateur vous signale ce que votre Content Security Policy bloque, une requête qui échoue ou une page qui utilise une API dépréciée. Mais il ne le fait que si vos en-têtes indiquent où envoyer le rapport, et la plupart des sites ne l'indiquent jamais.

Ce que le vérificateur examine

Il répond à trois questions sur n'importe quelle URL : où avez-vous dit aux navigateurs d'envoyer leurs rapports, quelles fonctionnalités de sécurité sont réellement câblées vers ces endpoints, et quels rapports sont générés puis jetés. Il ne lit que vos en-têtes de réponse, car c'est aussi tout ce qu'un navigateur lit : pas d'agent, pas de JavaScript, rien à installer.

Reporting-Endpoints ou Report-To ?

Deux en-têtes peuvent faire le travail, et l'un des deux vit en sursis. Reporting-Endpoints est le standard actuel : une ligne de paires nom-URL. Report-To est son prédécesseur déprécié, et la seule raison pour laquelle il refuse de mourir est Network Error Logging, qui l'exige encore. Si vous ajoutez le reporting aujourd'hui, déclarez vos endpoints dans Reporting-Endpoints. Les deux sont couverts en profondeur dans le guide Reporting-Endpoints et le guide Report-To.

Reporting-Endpoints: default="https://<Endpoint-ID>.report.centralcsp.com", csp-endpoint="https://<Endpoint-ID>.report.centralcsp.com"

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

Reporting-Endpoints, Report-To, report-to, report-uri

Quatre noms, deux en-têtes et deux directives CSP. Voici le tableau que l'on vient réellement chercher.

Les deux en-têtes de reporting et les deux directives CSP de reporting comparés
NomCe que c'estStatutQuand vous en avez encore besoin
Reporting-EndpointsEn-tête de réponse nommant les endpoints par paires nom-URLÀ jourToujours, pour toute nouvelle configuration
Report-ToEn-tête de réponse déclarant des groupes d'endpoints en JSONDéprécié, mais requis pour NELSeulement si vous collectez le Network Error Logging
report-toDirective CSP pointant vers un nom d'endpoint déclaré dans un en-têteÀ jourToujours, pour router les violations CSP vers un endpoint
report-uriDirective CSP nommant directement une URL, sans en-tête requisDépréciéPlus nécessaire : report-to et Reporting-Endpoints la remplacent

Brancher les rapports de violation CSP avec report-to

Le déploiement de CSP le plus sûr commence par des rapports, pas par des règles. Servez la politique en Content-Security-Policy-Report-Only avec une directive report-to qui pointe vers un endpoint déclaré dans Reporting-Endpoints. Les navigateurs vous disent alors exactement ce que la politique aurait cassé, et vous la durcissez avant qu'un seul visiteur ne soit affecté. La directive report-uri, dépréciée, ne vaut plus la peine d'être ajoutée à une nouvelle politique : report-to et Reporting-Endpoints couvrent à eux seuls les rapports de violation CSP. Pour les détails, consultez la Présentation de Content-Security-Policy et le guide du rapport de violation CSP.

Reporting-Endpoints: csp-endpoint="https://<Endpoint-ID>.report.centralcsp.com"

Content-Security-Policy-Report-Only: default-src 'self'; report-to csp-endpoint

NEL, l'exception qui exige encore Report-To

Certains échecs n'atteignent jamais votre serveur : un DNS qui ne résout pas, un TLS qui n'aboutit pas, des connexions qui meurent en route. Network Error Logging est la façon dont les navigateurs les rapportent, et comme la visite échouée ne livre aucun en-tête, le navigateur doit se souvenir de votre configuration depuis une visite réussie antérieure. C'est pourquoi NEL a encore besoin de l'ancien en-tête Report-To, et pourquoi Reporting-Endpoints ne peut pas le remplacer. Chromium uniquement. Syntaxe complète dans le guide Network Error Logging.

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

NEL: {"report_to":"network-errors","max_age":2592000}

Quand les rapports n'arrivent pas

Six causes couvrent la quasi-totalité des endpoints silencieux.

  • Une page servie en http://. La Reporting API ne fonctionne que dans un contexte sécurisé : une page qui n'est pas servie en HTTPS ne génère aucun rapport, quels que soient ses en-têtes.
  • Un nom d'endpoint que rien ne déclare. Une directive report-to pointe vers un endpoint qu'aucun en-tête Reporting-Endpoints ou Report-To ne déclare : le navigateur génère le rapport puis l'abandonne.
  • Un endpoint en http://. Les navigateurs l'ignorent, sans erreur ni avertissement en console.
  • Le mauvais type de contenu. L'endpoint doit accepter les requêtes POST en application/reports+json, ou en application/csp-report pour l'ancien format report-uri.
  • Une réponse autre qu'un code 2xx. Tout autre code et le navigateur considère la livraison comme échouée.
  • Le délai de regroupement. Celui que l'on prend le plus souvent pour une panne. Les navigateurs mettent les rapports en file et les envoient un peu après le chargement de page qui les a produits : un endpoint qui semble mort trente secondes après un test n'a peut-être simplement pas eu le temps.

Si vous voulez voir les rapports avant même d'avoir branché un endpoint, une page peut lire les siens avec ReportingObserver en JavaScript : c'est un bon moyen de confirmer que le navigateur génère bien ce que vous attendez.

Comment lire vos résultats

Les résultats sont pensés pour être simples : ils vous montrent comment votre reporting est configuré et signalent tout ce qui le casserait. Un endpoint référencé qu'aucun en-tête ne déclare ? Signalé. Un endpoint déclaré vers lequel rien n'envoie ? Signalé. Une politique qui ne rapporte nulle part ? Signalée aussi, avec le correctif juste à côté. Corrigez ce qui est signalé, relancez la vérification, et vos rapports continuent d'arriver.

Plus d'outils gratuits

Poursuivez l'audit avec les autres outils gratuits

Chaque outil est gratuit, fonctionne sans compte et note avec la même échelle de sévérité.

Scanner CSP

Récupérez la Content-Security-Policy réellement servie par une URL et notez-la face aux contournements connus, aux sources joker et aux directives manquantes.

  • Constats au niveau des directives
  • Lien de résultats partageable
Lancer le scanner CSP

Évaluateur CSP

Collez une politique pas encore déployée et obtenez la même notation et les mêmes constats qu'un scan en ligne, sans URL.

  • Auditez avant de déployer
  • Même moteur de notation
Évaluer une politique dans l'évaluateur CSP

Scanner d'en-têtes de sécurité

Notez chaque en-tête de sécurité envoyé par une URL, de HSTS à Permissions-Policy, avec chaque constat expliqué et priorisé.

  • Tous les en-têtes, une seule note
  • Correctifs classés par impact
Scanner vos en-têtes de sécurité

Générateur de hash SRI

Transformez l'URL d'un script ou d'un CSS servi par un CDN en hash Subresource Integrity, avec une balise prête à coller et une vérification CORS.

  • SHA-256, 384 et 512
  • CORS vérifié pour vous
Générer un hash SRI

Générateur de hash CSP

Transformez un script ou un style inline en hash qui l'autorise sous une politique stricte, directement dans votre navigateur.

  • Fonctionne entièrement côté client
  • SHA-256, 384 et 512
Générer un hash CSP

Comparateur de sites

Situez votre score : votre site à côté de la moyenne du jeu de données et des sites les mieux configurés de l'année, contrôle par contrôle.

  • Références publiées et vérifiables
  • Vue radar par catégorie
Comparez votre site aux meilleurs

FAQ

Questions fréquentes

Endpoints, en-têtes et rapports manquants : les réponses.

Endpoint vérifié. Collectez-y maintenant de vrais rapports.

CentralCSP vous fournit un endpoint de reporting managé qui accepte toutes les générations : report-uri, Report-To et Reporting-Endpoints sur la même URL. Les rapports arrivent dédupliqués, regroupés et alertés dans Slack ou Teams. Ajoutez un en-tête, sans changer votre code.