Ce que ça fait
L’en-tête HTTP Permissions-Policy indique au navigateur quelles fonctionnalités web puissantes votre page — et chaque iframe que vous intégrez — a le droit d’utiliser. Caméra, micro, géolocalisation, capteurs, USB, partage d’écran : par défaut, chacune est disponible pour votre propre origine, en attente qu’un script la demande.
Cet outil transforme cet en-tête, d’une chaîne tapée à la main en un éditeur de directives structuré. Chaque carte de directive nomme une fonctionnalité — les fonctionnalités connues portent un badge d’impact sur la confidentialité (élevé / moyen / faible) et une note sur ce que fait la fonctionnalité — et choisit une liste d’autorisation : autorisée partout (*), même origine seulement (self), désactivée d’office (()), ou une liste d’origines personnalisée. L’en-tête s’assemble tout seul, en direct, à côté des réglages. Collez un en-tête existant pour le charger et le modifier.
Comment l’utiliser
- Partez d’un préréglage — All deny (chaque fonctionnalité du catalogue désactivée), Camera self (
camera=(self)), ou Fullscreen * (fullscreen=*). - Modifiez les cartes de directives — tapez un nom de fonctionnalité, choisissez sa liste d’autorisation (
Aucun/Self/Tout/Origines), et pourOriginesdonnez une liste d’origines séparées par des espaces. Ajoutez ou retirez librement des directives. - Collez un en-tête existant — dépliez le panneau d’import, collez votre valeur
Permissions-Policyactuelle, et Analyser et charger la fait entrer dans l’éditeur (le préfixe de nom d’en-tête et les origines entre guillemets sont gérés ; une entrée mal formée est signalée). - Copiez ou téléchargez — copiez l’en-tête pour la configuration de votre serveur / CDN, ou téléchargez-le en
permissions-policy.txt. - Partagez la configuration — votre liste complète de directives est encodée dans l’URL de la page ; copiez l’adresse pour transmettre la politique exacte à quelqu’un.
Exemples
Un défaut strict pour un site qui n’a besoin d’aucune de ces API :
camera=(), display-capture=(), geolocation=(), hid=(), idle-detection=(),
microphone=(), serial=(), usb=(), xr-spatial-tracking=()
Intégrer un partenaire vidéo qui a besoin de la caméra + du micro uniquement sur son propre cadre :
camera=(https://partner.example.com), geolocation=(), microphone=(https://partner.example.com)
Garder le plein écran et le paiement pour vous-même, tout le reste verrouillé :
fullscreen=(self), payment=(self)
Bon à savoir
- Validation en direct — l’outil signale les directives dupliquées (seule la dernière survit dans l’en-tête), le
*sur le trio sensible (camera,geolocation,microphone— chaque origine reçoit l’invite matérielle), et les noms hors catalogue (coquille, ou fonctionnalité que les navigateurs ne connaissent pas encore — ignorée en silence). - Pourquoi verrouiller des fonctionnalités que vous n’utilisez jamais ? Une fonctionnalité désactivée ne peut pas être réactivée par une dépendance compromise, un script publicitaire voyou ou une iframe injectée. Cela réduit aussi votre surface d’empreinte — les API de capteurs et de batterie sont des vecteurs de pistage classiques.
- La détection de fonctionnalités fonctionne toujours. Les scripts qui appellent
navigator.mediaDevicessur une fonctionnalité désactivée reçoivent une promesse rejetée plutôt qu’une invite — posezallow="camera"uniquement sur les iframes spécifiques qui en ont besoin. - Ceci n’est pas CSP. Content-Security-Policy contrôle quel contenu se charge ; Permissions-Policy contrôle quelles API matérielles peuvent être utilisées. Livrez les deux.
- 100 % côté client — l’en-tête est construit dans votre navigateur ; rien n’est téléversé.
- Outils liés : Générateur de CSP, Basic Auth Generator.