Les politiques de sécurité liée au contenu et de contrôle des fonctionnalités

Au cours du temps, les possibilités du web ont été multipliés et les sites web ont progressivement intégrés de nouveaux contenus et fait de plus en plus appel à des contenus externes (en intégrant des polices Google, des frameworks, des scripts externes comme Google Analytics, etc.) tout en développant leur éventail de fonctionnalités.

Face à cela, des politiques de sécurité ont dû être mises en place pour éviter que les navigateurs et les serveurs ne soient sujets à des attaques et corruptions en suivant aveuglément n’importe quelle requête.

Il existe deux grands types de politique de sécurité aujourd’hui : la politique de sécurité liée aux contenus ou CSP pour Content Security Policy et la politique liée aux fonctionnalités au Feature Policy.

 

La politique de sécurité liée aux contenus ou CSP

L’objectif principal de la politique de sécurité liée aux contenus est de permettre de restreindre l’origine de certains contenus jugés à risque (tel qu’un script Javascript, une feuille de style etc.) intégrés dans un document à certains sites autorisés.

L’application de cette politique permet de se protéger contre l’injection de code malveillant et donc contre les attaques de type XSS (cross-site scripting) et contre les attaques dont le but est de détourner un utilisateur vers un autre site suite à un clic.

L’application de la politique de sécurité liée aux contenus se fait via l’en-tête HTTP Content-Security-Policy. Concrètement, on va envoyer la liste des sites autorisés (sous forme de liste de noms de domaine) en valeur de l’en-tête.

 

La politique liée aux fonctionnalités

La politique liée aux fonctionnalités fournit un mécanisme pour déclarer explicitement quelles fonctionnalités peuvent être utilisées et quelles fonctionnalités ne peuvent pas être utilisées sur l’ensemble d’un site Web.

Concrètement, la politique liée aux fonctionnalités permet aux développeurs Web d’activer, de désactiver et de modifier de manière sélective le comportement de certaines fonctionnalités et API dans le navigateur.

On va pouvoir attribuer une stratégie de contrôle à chacune des fonctionnalités suivantes :

  • GeoLocation
  • midi
  • Notifications
  • Push
  • sync-xhr
  • Microphone
  • Camera
  • Magnetometer
  • Gyroscope
  • Speaker
  • Vibrate
  • Fullscreen
  • Payment

On va pouvoir spécifier une stratégie liée aux fonctionnalités de deux façons différentes :

  • En utilisant l’en-tête HTTP Feature-Policy ;
  • En utilisant un attribut HTML allow dans des iframes.

L’attribut allow ne contrôle que les fonctionnalités d’un iframe tandis que l’en-tête Feature-Policy contrôle les fonctionnalités de tout contenu incorporé dans la page.

L’en-tête Feature-Policy supporte trois valeurs qui permettent de définir dans quel contexte une fonctionnalité peut être utilisée :

  • * : La page dans son ensemble (avec tous les iframes imbriqués) peuvent utiliser la fonctionnalité liée ;
  • Self : La page ainsi que tous les contextes de navigation imbriqués peuvent utiliser la fonctionnalité liée à condition qu’ils soient sur la même origine ;
  • None : La fonctionnalité liée ne peut pas être utilisée sur la page.

© Pierre Giraud - Toute reproduction interdite