# Violation Document-Policy (/fr/docs/web-security/reporting-api/reports/document-policy-violation)



Un report `document-policy-violation` vous indique que la page a fait quelque chose
qu'une contrainte de [Document-Policy](/fr/docs/web-security/policies/document-policy) interdit, par exemple appeler `document.write` ou charger
une image surdimensionnée quand ces usages sont restreints. Il nomme le point de
configuration enfreint et l'endroit où cela s'est produit.

<Callout type="warn" title="Expérimental">
  Document-Policy est un brouillon WICG, pas un standard W3C, et c'est Chromium qui le porte. L'ensemble des points de configuration et le `body` du report ne sont pas stables.
</Callout>

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

Quand la page enfreint un point de configuration contraint par la document policy.
Passez par `Document-Policy-Report-Only` pour voir les violations sans rien bloquer :
l'ensemble des points de configuration dépend de l'implémentation, mieux vaut donc
confirmer ce qui se déclenche vraiment avant de bloquer.

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

```json
{
  "type": "document-policy-violation",
  "age": 420,
  "url": "https://example.com/",
  "user_agent": "Mozilla/5.0 ...",
  "body": {
    "policyId": "document-write",
    "disposition": "enforce",
    "message": "Document policy violation: document-write is not allowed.",
    "sourceFile": "https://example.com/script.js",
    "lineNumber": 11,
    "columnNumber": 12
  }
}
```

Le body d'un report `document-policy-violation` contient ces champs, à l'intérieur de l'enveloppe de report commune.

## Référence des champs [#référence-des-champs]

| Champ                         | Signification                                                               |
| ----------------------------- | --------------------------------------------------------------------------- |
| `policyId`                    | Le point de configuration qui a été enfreint, par exemple `document-write`. |
| `disposition`                 | `enforce`, ou `report` en mode Report-Only.                                 |
| `message`                     | Une description de la violation, lisible par un humain.                     |
| `sourceFile`                  | Le fichier qui l'a déclenché.                                               |
| `lineNumber` / `columnNumber` | L'emplacement dans ce fichier.                                              |

## Comment le recevoir [#comment-le-recevoir]

Ajoutez un paramètre `report-to` au header `Document-Policy` (ou sa variante Report-Only)
et déclarez cet endpoint dans [`Reporting-Endpoints`](/fr/docs/web-security/reporting-api/headers/reporting-endpoints). CentralCSP collecte le
[flux document-policy](/fr/docs/platform/monitoring/document-policy).

## Ce qu'il vous apprend sur la sécurité [#ce-quil-vous-apprend-sur-la-sécurité]

Les contraintes les plus utiles réduisent de vrais dangers : bloquer `document.write`
élimine un risque d'injection de script et de performance, par exemple. Un report de
violation vous mène droit au code legacy qui dépend encore du comportement
que vous voulez retirer.

## Pièges [#pièges]

<Callout type="info">
  Le report posté nomme le champ `policyId`. L'interface ReportingObserver côté navigateur expose la même valeur sous `featureId` : parsez donc les reports reçus sur `policyId`, et ne lisez `featureId` que dans le code côté navigateur.
</Callout>

## Prise en charge par les navigateurs [#prise-en-charge-par-les-navigateurs]

Navigateurs basés sur Chromium uniquement ; expérimental, et il n'existe pas de registre
normatif des points de configuration : les contraintes disponibles dépendent donc de
l'implémentation.

## Voir aussi [#voir-aussi]

* [Document-Policy](/fr/docs/web-security/policies/document-policy)
* [Document-Policy expliqué (guide)](/fr/blog/document-policy-explained)
* [report crash](/fr/docs/web-security/reporting-api/reports/crash)
* [Monitoring Document-Policy dans CentralCSP](/fr/docs/platform/monitoring/document-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]

* [WICG, Document Policy](https://wicg.github.io/document-policy/)
* [MDN, Reporting API](https://developer.mozilla.org/en-US/docs/Web/API/Reporting_API)
