CentralCSP
Reporting APITypes de rapports

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 est porté par 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, 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

{
  "type": "permissions-policy-violation",
  "age": 41,
  "url": "https://api-next.centralcsp.com/",
  "user_agent": "Mozilla/5.0 ...",
  "body": {
    "policyId": "geolocation",
    "sourceFile": "https://api-next.centralcsp.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

ChampSignification
policyIdLa fonctionnalité qui a été utilisée, par exemple geolocation, camera.
sourceFileLe fichier qui a utilisé la fonctionnalité.
lineNumber / columnNumberL'emplacement dans ce fichier.
dispositionenforce, ou report en mode Report-Only.
messageUne description lisible par un humain de la violation.

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-endpoint

Ce 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 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

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.

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

Sources

On this page