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.