Violation d'intégrité
Le rapport integrity-violation se declenche quand Integrity-Policy bloque un script depourvu de metadonnees Subresource Integrity valides.
Dernière mise à jour:
Un rapport integrity-violation vous indique qu'Integrity-Policy a bloqué, ou
bloquerait, un script chargé sans métadonnées Subresource Integrity (SRI) valides.
C'est ainsi que vous repérez les ressources qui pourraient être remplacées ou altérées (par exemple un
asset de CDN compromis) avant qu'elles ne s'exécutent.
Expérimental
Integrity-Policy et son reporting sont récents et limités. Le reporting vers un endpoint fonctionne dans Chrome et Edge ; Firefox ne fait que journaliser dans la console et Safari ne le prend pas en charge.
Quand le navigateur l'envoie
Quand un document sous Integrity-Policy (ou Report-Only) charge un script sans attribut
integrity valide, ou demandé en mode no-cors. Utilisez
Integrity-Policy-Report-Only pour voir quels scripts manquent de SRI avant d'appliquer
le blocage, afin qu'un déploiement ne casse pas un script légitime mais non hashé.
Configuration
Reporting-Endpoints: integrity-endpoint="https://<Endpoint-ID>.report.centralcsp.com"Integrity-Policy-Report-Only: blocked-destinations=(script), endpoints=(integrity-endpoint)Exemple de payload
{
"type": "integrity-violation",
"age": 5,
"url": "https://api-next.centralcsp.com/",
"user_agent": "Mozilla/5.0 ...",
"body": {
"documentURL": "https://api-next.centralcsp.com/",
"blockedURL": "https://api-next.centralcsp.com/example-framework.js",
"destination": "script",
"reportOnly": false
}
}Chaque body de report integrity-violation porte ces champs à l'intérieur de l'enveloppe de report partagée.
Référence des champs
| Champ | Signification |
|---|---|
documentURL | La page sur laquelle le script s'est chargé. |
blockedURL | Le script dépourvu de SRI valide. |
destination | La destination de la requête (actuellement seulement script). |
reportOnly | true pour une politique report-only, false lorsqu'elle est appliquée. |
Comment le recevoir
Integrity-Policy sélectionne ses endpoints de reporting avec la directive endpoints=(),
et non le paramètre report-to= qu'utilisent les autres politiques, et ces noms sont déclarés
dans Reporting-Endpoints. CentralCSP collecte le
flux d'intégrité ; associez-le au
script inventory pour savoir quels scripts
portent déjà du SRI.
Ce qu'il vous apprend sur la sécurité
Un script bloqué est un signal de supply-chain : un asset de CDN a changé et ne correspond plus à son hash, ou un script se charge sans aucune protection d'intégrité. Dans les deux cas, c'est exactement l'altération qu'Integrity-Policy existe pour détecter, et le rapport nomme le script.
Pièges
Le câblage du reporting utilise endpoints=(), et non le paramètre report-to= utilisé par
COOP, COEP et Permissions-Policy. Actuellement, seule la destination script est
couverte.
Support navigateur
Défini dans la spec SRI ; disponibilité limitée. Le reporting vers un endpoint fonctionne dans Chrome et Edge ; Firefox ne fait que journaliser dans la console, et Safari ne le prend pas en charge.
Voir aussi
- Integrity-Policy
- Integrity-Policy expliqué (guide)
- Subresource Integrity (SRI)
- rapport csp-hash
- Surveillance Integrity-Policy dans CentralCSP
- Header Reporting-Endpoints
- Le format de livraison des rapports