Violation Permissions-Policy
Le report permissions-policy-violation se déclenche quand une page utilise une fonctionnalité interdite par Permissions-Policy.
Dernière mise à jour:
Un report permissions-policy-violation vous indique que la page a tenté d'utiliser
une fonctionnalité navigateur que 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.
Expérimental
Le reporting Permissions-Policy n'est pas Baseline et repose sur Chromium. Le body du report diffère aussi de la spec (voir Pièges).
Quand le navigateur l'envoie
Quand du code utilise une fonctionnalité que la politique verrouille dans le contexte
courant, que ce soit le document principal ou une iframe où elle est interdite. Passez par
Permissions-Policy-Report-Only pour voir quelles fonctionnalités seraient bloquées
avant d'appliquer la politique, et ne pas casser un usage légitime.
Exemple de payload
{
"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."
}
}Le body d'un report permissions-policy-violation contient ces champs, à l'intérieur de l'enveloppe de report commune.
Référence des champs
| Champ | Signification |
|---|---|
policyId | La fonctionnalité 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 de la violation, lisible par un humain. |
Comment le recevoir
Ajoutez un paramètre report-to= par directive sur le header Permissions-Policy et
déclarez cet endpoint dans Reporting-Endpoints. CentralCSP collecte le
flux permissions-policy.
Reporting-Endpoints: pp-endpoint="https://<Endpoint-ID>.report.centralcsp.com"Permissions-Policy: geolocation=();report-to=pp-endpointCe qu'il 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 de surface d'attaque, et le report nomme la fonctionnalité et sa source, ce qui vous permet de cadrer la politique au plus juste.
Pièges
Le report posté nomme la fonctionnalité policyId. L'interface ReportingObserver côté navigateur, PermissionsPolicyViolationReport, expose la même valeur sous featureId : un endpoint qui lit les reports reçus doit donc se baser sur policyId, tandis que le code côté navigateur lit featureId. Chromium émet aussi un type distinct potential-permissions-policy-violation.
Prise en charge par les navigateurs
Navigateurs basés sur Chromium uniquement pour le report lui-même. Le header
Permissions-Policy est lui aussi propre à Chromium ; Firefox et Safari ne prennent en
charge que le modèle de l'attribut allow sur l'iframe pour certaines fonctionnalités,
traitez donc le report comme un signal Chromium-first.
Voir aussi
- Permissions-Policy
- report document-policy-violation
- Permissions-Policy expliqué
- Monitoring Permissions-Policy dans CentralCSP
- Header Reporting-Endpoints
- Le format de livraison des rapports