# Violation d'intégrité (/fr/docs/web-security/reporting-api/reports/integrity-violation)



Un rapport `integrity-violation` vous indique qu'[Integrity-Policy](/fr/docs/web-security/policies/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.

<Callout type="warn" title="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.
</Callout>

## Quand le navigateur l'envoie [#quand-le-navigateur-lenvoie]

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 [#configuration]

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

```http
Integrity-Policy-Report-Only: blocked-destinations=(script), endpoints=(integrity-endpoint)
```

## Exemple de payload [#exemple-de-payload]

```json
{
  "type": "integrity-violation",
  "age": 5,
  "url": "https://example.com/",
  "user_agent": "Mozilla/5.0 ...",
  "body": {
    "documentURL": "https://example.com/",
    "blockedURL": "https://example.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 [#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 [#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`](/fr/docs/web-security/reporting-api/headers/reporting-endpoints). CentralCSP collecte le
[flux d'intégrité](/fr/docs/platform/monitoring/integrity-policy) ; associez-le au
[script inventory](/fr/docs/platform/features/script-inventory) pour savoir quels scripts
portent déjà du SRI.

## Ce qu'il vous apprend sur la sécurité [#ce-quil-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 [#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 [#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 [#voir-aussi]

* [Integrity-Policy](/fr/docs/web-security/policies/integrity-policy)
* [Integrity-Policy expliqué (guide)](/fr/blog/integrity-policy-explained)
* [Subresource Integrity (SRI)](/fr/docs/web-security/other/subresource-integrity)
* [rapport csp-hash](/fr/docs/web-security/reporting-api/reports/csp-hash)
* [Surveillance Integrity-Policy dans CentralCSP](/fr/docs/platform/monitoring/integrity-policy)
* [Header Reporting-Endpoints](/fr/docs/web-security/reporting-api/headers/reporting-endpoints)
* [Le format de livraison des rapports](/fr/docs/web-security/reporting-api/concepts/report-delivery-format)

## Sources [#sources]

* [MDN, IntegrityViolationReport](https://developer.mozilla.org/en-US/docs/Web/API/IntegrityViolationReport)
* [MDN, Integrity-Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Integrity-Policy)
* [W3C, Subresource Integrity Integrity-Policy](https://w3c.github.io/webappsec-subresource-integrity/#integrity-policy-section)
