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



Un report `permissions-policy-violation` vous indique que la page a tenté d'utiliser
une fonctionnalité navigateur que [Permissions-Policy](/fr/docs/web-security/policies/permissions-policy) n'autorise pas dans ce
contexte, par exemple la géolocalisation ou la caméra dans une frame où elle est
désactivée. Il nomme la fonctionnalité et l'origine de l'appel, pour que vous voyiez
ce qui casserait avant de resserrer la politique.

<Callout type="warn" title="Expérimental">
  Le reporting Permissions-Policy n'est pas Baseline et est porté par Chromium. Le `body` du report diffère aussi de la spec (voir Pièges).
</Callout>

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

Quand du code utilise une fonctionnalité que la politique verrouille dans le contexte
courant, le document principal ou une iframe où elle est interdite. Exécutez
`Permissions-Policy-Report-Only` pour observer quelles fonctionnalités seraient bloquées
avant d'appliquer la politique, afin de ne pas casser un usage légitime.

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

```json
{
  "type": "permissions-policy-violation",
  "age": 41,
  "url": "https://example.com/",
  "user_agent": "Mozilla/5.0 ...",
  "body": {
    "policyId": "geolocation",
    "sourceFile": "https://example.com/app.js",
    "lineNumber": 44,
    "columnNumber": 29,
    "disposition": "enforce",
    "message": "Permissions policy violation: geolocation has been blocked."
  }
}
```

Chaque body de report `permissions-policy-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                                                              |
| ----------------------------- | -------------------------------------------------------------------------- |
| `policyId`                    | La fonctionnalité qui a été utilisée, par exemple `geolocation`, `camera`. |
| `sourceFile`                  | Le fichier qui a utilisé la fonctionnalité.                                |
| `lineNumber` / `columnNumber` | L'emplacement dans ce fichier.                                             |
| `disposition`                 | `enforce`, ou `report` en mode Report-Only.                                |
| `message`                     | Une description lisible par un humain de la violation.                     |

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

Ajoutez un paramètre `report-to=` par directive sur le header `Permissions-Policy` et
déclarez cet endpoint dans [`Reporting-Endpoints`](/fr/docs/web-security/reporting-api/headers/reporting-endpoints). CentralCSP collecte le
[flux permissions-policy](/fr/docs/platform/monitoring/permissions-policy).

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

```http
Permissions-Policy: geolocation=();report-to=pp-endpoint
```

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

Ces violations révèlent du code, souvent une frame ou un script tiers, qui cherche à
atteindre une fonctionnalité sensible qu'il ne devrait pas avoir : caméra, microphone,
géolocalisation, paiement. C'est à la fois un signal de confidentialité et un signal de
surface d'attaque, et le report nomme précisément quelle fonctionnalité et quelle source,
pour que vous puissiez cadrer la politique avec précision.

## Pièges [#pièges]

<Callout type="info">
  Le report posté nomme la fonctionnalité `policyId`. L'interface ReportingObserver côté navigateur, `PermissionsPolicyViolationReport`, expose la même valeur sous `featureId`, donc un endpoint qui lit les reports reçus doit se baser sur `policyId` tandis que le code côté navigateur lit `featureId`. Chromium émet aussi un type distinct `potential-permissions-policy-violation`.
</Callout>

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

Navigateurs basés sur Chromium uniquement pour le report lui-même. Le header
`Permissions-Policy` est lui-même propre à Chromium ; Firefox et Safari ne prennent en
charge que le modèle de l'attribut `allow` sur l'iframe pour certaines fonctionnalités,
alors traitez le report comme un signal Chromium-first.

## Voir aussi [#voir-aussi]

* [Permissions-Policy](/fr/docs/web-security/policies/permissions-policy)
* [report document-policy-violation](/fr/docs/web-security/reporting-api/reports/document-policy-violation)
* [Permissions-Policy expliqué](/fr/blog/permissions-policy-explained)
* [Monitoring Permissions-Policy dans CentralCSP](/fr/docs/platform/monitoring/permissions-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, PermissionsPolicyViolationReport](https://developer.mozilla.org/en-US/docs/Web/API/PermissionsPolicyViolationReport)
* [MDN, Permissions-Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Permissions-Policy)
