Permissions-Policy
Définir quelles fonctionnalités du navigateur une page ou un contenu intégré est autorisé à utiliser.
Comprendre Permissions-Policy
Les navigateurs modernes proposent de nombreuses fonctionnalités qu’un site web peut utiliser : caméra, microphone, géolocalisation, plein écran, capteurs ou autres fonctions liées à l’appareil.
Permissions-Policy permet au site de limiter l’accès à ces fonctionnalités.
Le principe est simple : si une fonctionnalité n’est pas nécessaire, elle ne devrait pas être disponible inutilement.
Pourquoi est-ce important ?
Une page web peut intégrer des contenus provenant d’autres sites, par exemple une vidéo, une carte, un widget, un module externe ou une iframe.
Sans règle particulière, certains de ces contenus peuvent disposer de capacités du navigateur qui ne sont pas réellement nécessaires à leur fonctionnement.
Permissions-Policy permet donc de réduire les possibilités disponibles et d’appliquer un principe simple : ne donner que les permissions réellement utiles.
Quelles fonctionnalités peut-on contrôler ?
Selon les fonctionnalités prises en charge par le navigateur, cela peut notamment concerner :
- la caméra ;
- le microphone ;
- la géolocalisation ;
- le plein écran ;
- certains capteurs ;
- différentes fonctionnalités spécialisées proposées par les navigateurs modernes.
Configurer Permissions-Policy
Le serveur transmet la politique grâce à l’en-tête HTTP :
Permissions-Policy: camera=(), microphone=()
Les parenthèses vides
()
signifient qu’aucune origine
n’est autorisée à utiliser
la fonctionnalité concernée.
Si le site n’utilise ni la caméra ni le microphone, cette configuration permet de désactiver explicitement ces capacités inutiles.
Autoriser uniquement le site lui-même
Il est également possible d’autoriser une fonctionnalité uniquement pour le site courant.
Permissions-Policy: geolocation=(self)
Ici, la géolocalisation peut être utilisée par le site lui-même, mais pas automatiquement par un contenu provenant d’une autre origine.
Autoriser uniquement ce qui est nécessaire
Une politique peut être construite pour décider précisément :
- quelles fonctionnalités sont complètement désactivées ;
- lesquelles sont disponibles uniquement pour le site lui-même ;
- et lesquelles peuvent être utilisées par certains services externes précis.
Limiter les permissions des contenus intégrés
Permissions-Policy est particulièrement utile
lorsqu’une page contient des
<iframe>
ou d’autres contenus intégrés.
Une iframe peut afficher un contenu provenant d’un autre site. Ce contenu ne doit pas nécessairement disposer de toutes les fonctionnalités disponibles dans le navigateur.
La politique permet donc de limiter précisément les capacités accordées aux contenus tiers.
Un lecteur vidéo peut par exemple avoir besoin du plein écran, sans pour autant avoir besoin de la géolocalisation ou du microphone.
Permissions-Policy ne remplace pas la demande d’autorisation du navigateur
Pour certaines fonctionnalités sensibles, comme la caméra, le microphone ou la géolocalisation, le navigateur peut également demander l’autorisation directement à l’utilisateur.
Permissions-Policy intervient à un autre niveau : elle détermine si cette fonctionnalité est autorisée à être utilisée dans ce contexte.
Une fonctionnalité interdite par Permissions-Policy ne devient donc pas disponible simplement parce que l’utilisateur aurait accepté une permission dans son navigateur.
Bonnes pratiques et limites
Bonnes pratiques
-
Mettre en place une
Permissions-Policyadaptée au fonctionnement réel du site. - Identifier les fonctionnalités réellement utilisées.
- Désactiver explicitement les fonctionnalités inutiles.
- Limiter autant que possible les permissions accordées aux contenus provenant de sites tiers.
- Autoriser uniquement les origines qui ont réellement besoin d’utiliser une fonctionnalité.
- Tester les fonctions importantes après toute modification de la politique.
- Réexaminer la politique lorsqu’un nouveau service, widget, contenu intégré ou fonctionnalité est ajouté au site.
Une politique restrictive ne doit pas empêcher les fonctions nécessaires
Permissions-Policy doit correspondre au fonctionnement réel du site.
Un service de visioconférence, par exemple, peut légitimement avoir besoin de la caméra et du microphone. Les interdire complètement empêcherait naturellement certaines fonctions de fonctionner.
Le but n’est donc pas de tout désactiver sans distinction, mais de désactiver ce qui est inutile et limiter précisément ce qui doit rester accessible.
Ce que Permissions-Policy ne remplace pas
Permissions-Policy contrôle certaines fonctionnalités mises à disposition par le navigateur, mais elle ne sécurise pas l’ensemble du site à elle seule.
Elle ne remplace notamment pas :
- Content-Security-Policy (CSP) ;
- HTTPS ;
- les autorisations demandées directement à l’utilisateur par le navigateur ;
- la sécurité du code ;
- les mises à jour et les autres protections du site.
Permissions-Policy constitue donc une couche de contrôle supplémentaire qui doit être mise en place afin de réduire les fonctionnalités disponibles à celles qui sont réellement nécessaires.