19 déc. 2024, 18:11:40 Jawad Lalouf

Liste des en-têtes de sécurité

Le paramétrage OWASP est détaillé dans les 2 chapitres à suivre Liste des en-têtes de type page et Liste des en-têtes de type API REST. Pour chaque en-tête, il est précisé quel paramétrage a été appliqué à Lutèce. Si la recommandation OWASP n’a pas été suivie (mise à l’écart de l’en-tête ou choix de valeurs différent), des éléments sont fournis pour en expliquer les raisons.

Les icônes suivantes indiquent le choix effectué pour Lutèce quant à l’ajout d’un en-tête proposé par OWASP :

  • check-circle : L’en-tête proposé a été ajouté et la ou les valeurs choisies sont celles qui ont été recommandées
  • exclamation-circle : L’en-tête proposé a été ajouté mais la ou les valeurs choisies sont différentes de celles qui ont été recommandées
  • times-circle : L’en-tête proposé n’a pas été ajouté

Liste des en-têtes de type page

Cette liste constitue l’ensemble des en-têtes à l’état “active” qu’OWASP recommande d’ajouter aux réponses lorsque le serveur renvoie une page.

Strict-Transport-Security check-circle

DéfinitionPermet d’informer les navigateurs que le site ne devrait être accessible qu’en HTTPS et que les futures tentatives d’accès via HTTP seront basculées automatiquement en HTTPS. Ceci permet d’éviter les attaques par dégradation de protocole et par détournement de cookies
Valeur recommandée par OWASPmax-age=31536000; includeSubDomains
Valeur retenue pour Lutècemax-age=31536000; includeSubDomains
Catégorie de pagetoutes les pages
Remarques- Les valeurs recommandées signifient que ce fonctionnement s’appliquera pendant 31536000 secondes (soit 1 an) à compter de la première réponse fournie au client par le serveur et qu’il s’applique aussi aux sous-domaines. \n - Cet en-tête concerne uniquement les sites qui utilisent le protocole HTTPS. \n - Il est ignoré si les échanges client/serveur utilisent le protocole HTTP
Compatibilité avec les navigateurs desktopChrome 4+ \n Edge 12+ \n Firefox 4+ \n Opera 12+ \n Safari 7+
Compatibilité avec les navigateurs mobilesChrome Android 18+ \n Firefox for Android 4+ \n Opera Android 12+ \n Safari on iOS 7+ \n Samsung Internet 1.0+ \n WebView Android 4.4+

X-Frame-Options times-circle

DéfinitionSpécifie si le navigateur est autorisé à afficher une page dans un élément <frame>, <iframe>, <embed> ou <object>. Il offre une protection contre les attaques par clickjacking
Valeur recommandée par OWASPdeny
Valeur retenue pour Lutècepas de valeur car en-tête non retenu
Catégorie de pagepas de catégorie car en-tête non retenu
Remarques- La recommandation OWASP n’a pas été suivie car cet en-tête a été rendu obsolète par la directive frame-ancestors présente dans l’en-tête Content-Security-Policy
Compatibilité avec les navigateurs desktopChrome 4+ \n Edge 12+ \n Firefox 4+ \n Opera 10.5+ \n Safari 4+
Compatibilité avec les navigateurs mobilesChrome Android 18+ \n Firefox for Android 4+ \n Opera Android 12+ \n Safari on iOS 7+ \n Samsung Internet 1.0+ \n WebView Android 4.4+

X-Content-Type-Options check-circle

DéfinitionPermet d’indiquer au navigateur de ne pas essayer de deviner le type MIME d’une ressource et de se fier au contenu de l’en-tête Content-Type de la requête
Valeur recommandée par OWASPnosniff
Valeur retenue pour Lutècenosniff
Catégorie de pagetoutes les pages
Remarques- La seule valeur possible pour cet en-tête est nosniff
Compatibilité avec les navigateurs desktopChrome 64+ \n Edge 12+ \n Firefox 50+ \n Opera 51+ \n Safari 11+
Compatibilité avec les navigateurs mobilesChrome Android 64+ \n Firefox for Android 50+ \n Opera Android 47+ \n Safari on iOS 11+ \n Samsung Internet 9.0+ \n WebView Android 64+

Content-Security-Policy (CSP) exclamation-circle

DéfinitionPermet de définir une couche de sécurité pour détecter ou atténuer certains types d’attaque dont les attaques XSS et les attaques par injection de données
Valeur recommandée par OWASPdefault-src ‘self’; form-action ‘self’; object-src ‘none’; frame-ancestors ‘none’; upgrade-insecure-requests; block-all-mixed-content
Valeur retenue pour Lutècedefault-src ‘self’; script-src ‘self’ ‘unsafe-inline’; style-src ‘self’ ‘unsafe-inline’; img-src ‘self’ data: blob:; connect-src ‘self’ blob:; object-src ‘none’; frame-ancestors ‘self’; upgrade-insecure-requests
Catégorie de pagetoutes les pages
Remarques- Le paramétrage choisi pour Lutèce tient compte des contraintes imposées par le code existant mais aussi par certaines librairies tierces comme tinyMCE par exemple. Son éditeur demande qu’un paramétrage spécifique soit appliqué lorsqu’un en-tête CSP est défini afin de pouvoir continuer à utiliser cette librairie (cf. Documentation TinyMCE). \n - Un paramétrage incorrect de cet en-tête peut sérieusement compromettre le fonctionnement d’une application. \n - Le paramétrage de cet en-tête est décrit en détail dans le tableau qui suit
Compatibilité avec les navigateurs desktopChrome 25+ \n Edge 14+ \n Firefox 23+ \n Opera 15+ \n Safari 7+
Compatibilité avec les navigateurs mobilesChrome Android 25+ \n Firefox for Android 23+ \n Opera Android 14+ \n Safari on iOS 7+ \n Samsung Internet 1.5+ \n WebView Android 4.4+

Détail du paramétrage de l’en-tête Content-Security-Policy

Le tableau ci-dessous détaille chacune des directives recommandées par OWASP pour l’en-tête Content-Security-Policy. Une directive peut être suivie de 0, 1 ou plusieurs valeurs. La liste des directives est disponible à l’adresse suivante : Policy Security. La signification des icônes est la même que pour les en-têtes mais appliquée aux directives.

Nom de la directiveValeur recommandée par OWASPValeur retenue pour LutèceRemarquesCompatibilité avec les navigateurs desktopCompatibilité avec les navigateurs mobiles
default-src check-circle‘self’‘self’- Affecte la valeur définie (valeur par défaut) à toutes les directives de la forme *-src comme script-src ou img-src par exemple. \n - La valeur ‘self’ signifie que l’accès aux ressources n’est autorisé que si l’appelant à la même origine que la ressource demandée (voir le glossaire pour la définition de l’origine). \n - Si une directive de la forme *-src est définie dans CSP, sa valeur remplace la valeur par défaut. \n - La valeur proposée par l’éditeur de la librairie tinyMCE pour cette directive est ‘none’ ce qui est trop restrictif pour Lutèce vu que certaines pages ne fonctionneraient plus. La proposition faite par OWASP a donc été conservéeChrome 25+ \n Edge 14+ \n Firefox 23+ \n Opera 15+ \n Safari 7+Chrome Android 25+ \n Firefox for Android 23+ \n Opera Android 14+ \n Safari on iOS 7+ \n Samsung Internet 1.5+ \n WebView Android 4.4+
script-src exclamation-circle‘self’ (valeur positionnée par default-src)‘self’ ‘unsafe-inline’- Définit les sources valides pour le chargement et l’exécution des scripts JavaScript. \n - Il n’est pas possible d’appliquer le paramétrage proposé par OWASP car la valeur ‘self’ implique que les scripts js directement intégrés aux pages html (scripts inline), les appels à des fonctions js via des événements (comme OnClick) ainsi que les scripts appelés via une balise <a> ne fonctionneraient plus. \n - La combinaison de valeurs ‘self’ ‘unsafe-inline’ permet tout de même de renforcer la sécurité (notamment en ce qui concerne les attaques utilisant jquery) sans changer le code existant.Chrome 25+ \n Edge 14+ \n Firefox 23+ \n Opera 15+ \n Safari 7+Chrome Android 25+ \n Firefox for Android 23+ \n Opera Android 14+ \n Safari on iOS 7+ \n Samsung Internet 1.5+ \n WebView Android 4.4+
style-src exclamation-circle‘self’ (valeur positionnée par default-src)‘self’ ‘unsafe-inline’- Définit les sources valides pour le chargement et l’exécution des styles et des feuilles de style CSS. \n - Il n’est pas possible d’appliquer le paramétrage proposé par OWASP car il existe dans le code des balises style inline et des balises div contenant un attribut style. Celles-ci ne fonctionneraient plus si le paramétrage proposé était appliqué. \n - Tout comme pour la sous-directive script-src, la combinaison des valeurs ‘self’ et ‘unsafe-inline’ permet toutefois d’augmenter le niveau de sécurité sans toucher au code.Chrome 25+ \n Edge 14+ \n Firefox 23+ \n Opera 15+ \n Safari 7+Chrome Android 25+ \n Firefox for Android 23+ \n Opera Android 14+ \n Safari on iOS 7+ \n Samsung Internet 1.5+ \n WebView Android 4.4+
img-src exclamation-circle‘self’ (valeur positionnée par default-src)‘self’ data: blob:- Définit les sources valides pour le chargement des images. \n - L’ajout des valeurs data: et blob: à la valeur ‘self’ sert à autoriser les urls data (images en base64 par exemple) et les urls blobs comme sources de contenu pour les images. Cet ajout est imposé par la librairie tinyMCE qui nécessite l’ajout de ces 2 valeurs en plus de la valeur ‘self’.Chrome 25+ \n Edge 14+ \n Firefox 23+ \n Opera 15+ \n Safari 7+Chrome Android 25+ \n Firefox for Android 23+ \n Opera Android 14+ \n Safari on iOS 7+ \n Samsung Internet 1.5+ \n WebView Android 4.4+
connect-src exclamation-circle‘self’ (valeur positionnée par default-src)‘self’ blob:- Restreint les urls qui peuvent être chargées à l’aide d’interfaces de script. Cela inclut XMLHttpRequest (XHR / AJAX), WebSocket, fetch(), <a ping>, EventSource et Navigator.sendBeacon(). \n - L’ajout de la valeur blob: à la valeur ‘self’ sert à autoriser les urls blobs comme sources de contenu par les interfaces de script. Cet ajout est imposé par la librairie tinyMCE qui nécessite l’ajout de cette valeur en plus de la valeur ‘self’.Chrome 25+ \n Edge 14+ \n Firefox 23+ \n Opera 15+ \n Safari 7+Chrome Android 25+ \n Firefox for Android 50+ \n Opera Android 14+ \n Safari on iOS 7+ \n Samsung Internet 1.5+ \n WebView Android 4.4+
object-src check-circle‘none’‘none’- Spécifie les sources valides pour les éléments <object> et <embed>.Chrome 25+ \n Edge 14+ \n Firefox 23+ \n Opera 15+ \n Safari 7+Chrome Android 25+ \n Firefox for Android 23+ \n Opera Android 14+ \n Safari on iOS 7+ \n Samsung Internet 1.5+ \n WebView Android 4.4+
frame-ancestors exclamation-circle‘none’‘self’- Spécifie les parents valides qu’une page peut intégrer en utilisant les balises <frame>, <iframe>, <object> ou <embed>. \n - Le paramétrage proposé par OWASP interdit aux pages d’être intégrées dans d’autres pages quelle qu’en soit l’origine. La valeur ‘none’ étant trop restrictive pour Lutèce, c’est la valeur ‘self’ qui a été choisie car elle limite l’intégration de pages dans d’autres pages seulement si les pages parentes ont la même origine que la page appelante.Chrome 40+ \n Edge 15+ \n Firefox 58+ \n Opera 26+ \n Safari 10+Chrome Android 40+ \n Firefox for Android 58+ \n Opera Android 27+ \n Safari on iOS 9.3+ \n Samsung Internet 4.0+ \n WebView Android 4.0+
upgrade-insecure-requests check-circlepas de valeurpas de valeur- Indique aux navigateurs de traiter toutes les urls non sécurisées (HTTP) comme si elles avaient été remplacées par des urls sécurisées (HTTPS) (cf. W3C). \n - Autrement dit, les urls en HTTP de la page seront réécrites par le navigateur en HTTPS avant exécution de la requête. Ne s’applique pas aux liens externes (hyperliens) de la page. \n - Utile dans le cas d’un site passant en HTTPS et dont les urls n’ont pas été ou ne peuvent pas être adaptées au protocole HTTPS. \n - Cette directive n’a pas de valeur. Il suffit que son nom soit indiqué pour qu’elle soit opérationnelle.Chrome 43+ \n Edge 17+ \n Firefox 42+ \n Opera 30+ \n Safari 10.1+Chrome Android 43+ \n Firefox for Android 42+ \n Opera Android 30+ \n Safari on iOS 10.3+ \n Samsung Internet 4.0+ \n WebView Android 43+
block-all-mixed-content times-circlepas de valeurdirective non retenue- Empêche le chargement de toute ressource via HTTP lorsque la page utilise HTTPS. \n - Cette directive n’a pas été choisie pour Lutèce pour les raisons suivantes : Elle est indiquée comme obsolète dans les spécifications W3C et peut donc cesser de fonctionner à tout moment, MDN Web Docs recommande de l’éviter et elle est incompatible avec la directive upgrade-insecure-requests.Chrome compatible \n Edge 79+ \n Firefox 48+ \n Opera compatible \n Safari compatibilité inconnueChrome Android compatible \n Firefox for Android 48+ \n Opera Android compatible \n Safari on iOS compatibilité inconnue \n Samsung Internet compatible \n WebView Android compatible

X-Permitted-Cross-Domain-Policies check-circle

DéfinitionUtilisé pour limiter les données auxquelles les ressources externes, tels que les documents Adobe Flash (obsolète), PDF, Silverlight (obsolète) ou Flex, entre autres, peuvent accéder sur le domaine (voir le glossaire en bas de page pour la définition d’un domaine)
Valeur recommandée par OWASPnone
Valeur retenue pour Lutècenone
Catégorie de pagetoutes les pages
Remarques- Lorsque cet en-tête a pour valeur none, le navigateur doit interdire à d’autres domaines d’intégrer des ressources de l’application dans le contenu des documents générés par les applications comme celles listées dans la définition de l’en-tête. \n - Permet de limiter les attaques de type XSS et les fuites de données cross-domain.
Compatibilité avec les navigateurs desktopLes seules informations trouvées viennent du site d’Adobe et sont les suivantes : \n Internet Explorer 5.5+ \n Firefox 2.0.0.4+ \n Safari 3.x+
Compatibilité avec les navigateurs mobilesAucune information trouvée

Referrer-Policy check-circle

DéfinitionUtilisé pour indiquer quelles sont les informations de l’appelant (referrer) qui peuvent être envoyées dans l’en-tête Referer des requêtes
Valeur recommandée par OWASPno-referrer
Valeur retenue pour Lutèceno-referrer
Catégorie de pagetoutes les pages
Remarques- La valeur no-referrer a pour conséquence que l’en-tête Referer sera complètement absent des requêtes et donc qu’aucune information sur l’appelant ne sera transmise.
Compatibilité avec les navigateurs desktopLes informations ci-dessous concernent la prise en charge de la valeur no-referrer pour cet en-tête : \n Chrome 56+ \n Edge 79+ \n Firefox 50+ \n Opera 43+ \n Safari 11.1+
Compatibilité avec les navigateurs mobilesLes informations ci-dessous concernent la prise en charge de la valeur no-referrer pour cet en-tête : \n Chrome Android 56+ \n Firefox for Android 50+ \n Opera Android 43+ \n Safari on iOS 12+ \n Samsung Internet 7.2+ \n WebView Android 56+

Clear-Site-Data check-circle

DéfinitionPermet de supprimer les données de navigation liées au site. Il est possible de cibler précisément le type de données à supprimer
Valeur recommandée par OWASP“cache”, “cookies”, “storage”
Valeur retenue pour Lutèce“cache”, “cookies”, “storage”
Catégorie de pagepages de déconnexion FO et BO
Remarques- La valeur “cache”, “cookies”, “storage” indique que le serveur souhaite que les données mises en cache localement, les cookies (informations d’authentification HTTP incluses) ainsi que les données de stockage du DOM en lien avec le site soient supprimés. \n - Ne fonctionne que sur les pages https (ou localhost) avec certains navigateurs (cf. Mozilla Developer Network). \n - Les guillemets entourant chaque directive sont importants. Sans eux, la directive est considérée comme invalide. \n - Ne fonctionne pas avec Safari à l’heure actuelle.
Compatibilité avec les navigateurs desktopChrome 61+ (61+ pour les directives cache, cookies, storage) \n Edge 79+ (79+ pour les directives cache, cookies, storage) \n Firefox 63+ (63+ pour les directives cache et storage, incompatible avec la directive cookies depuis v94) \n Opera 48+ (48+ pour les directives cache, cookies, storage) \n Safari 17+ incompatible
Compatibilité avec les navigateurs mobilesChrome Android 61+ (61+ pour les directives cache, cookies, storage) \n Firefox for Android 63+ (63+ pour les directives cache et storage, incompatible avec la directive cookies depuis v94) \n Opera Android 45+ (45+ pour les directives cache, cookies, storage) \n Safari on iOS incompatible \n Samsung Internet 8.0+ (8.0+ pour les directives cache, cookies, storage) \n WebView Android 61+ (61+ pour les directives cache, cookies, storage)

Cross-Origin-Embedder-Policy check-circle

DéfinitionPermet de configurer l’intégration de ressources multi-origines (cross-origin) dans le document
Valeur recommandée par OWASPrequire-corp
Valeur retenue pour Lutècerequire-corp
Catégorie de pagetoutes les pages
Remarques- La valeur require-corp signifie que le document peut accéder aux ressources de la même origine que l’appelant ou à celles qui ont été spécifiquement autorisées par le Cross-Origin-Resource-Sharing, soit par l’attribut cross-origin, soit par la valeur de l’en-tête Cross-Origin-Resource-Policy comme c’est le cas dans la configuration recommandée par OWASP.
Compatibilité avec les navigateurs desktopChrome 83+ \n Edge 83+ \n Firefox 79+ \n Opera 69+ \n Safari 15.2+
Compatibilité avec les navigateurs mobilesChrome Android 83+ \n Firefox for Android 79+ \n Opera Android 59+ \n Safari on iOS 15.2+ \n Samsung Internet 13.0+ \n WebView Android 86+

Cross-Origin-Opener-Policy check-circle

DéfinitionPermet de garantir qu’un document de niveau supérieur ne partage pas un groupe de contexte de navigation avec des documents d’origine croisée
Valeur recommandée par OWASPsame-origin
Valeur retenue pour Lutècesame-origin
Catégorie de pagetoutes les pages
Remarques- La valeur same-origin signifie que si une nouvelle fenêtre s’ouvre à partir d’une page, le contexte de navigation ne sera partagé que si la fenêtre ouverte a la même origine que la page (voir le glossaire en bas de page pour la définition de la politique de sécurité same-origin). \n - Permet de limiter les risques d’attaques de type “cross-origin” et les attaques par détournement de session.
Compatibilité avec les navigateurs desktopChrome 83+ \n Edge 83+ \n Firefox 79+ \n Opera incompatible \n Safari 15.2+
Compatibilité avec les navigateurs mobilesChrome Android 83+ \n Firefox for Android 79+ \n Opera Android incompatible \n Safari on iOS 15.2+ \n Samsung Internet 13.0+ \n WebView Android incompatible

Cross-Origin-Resource-Policy exclamation-circle

DéfinitionPermet de contrôler l’accès aux ressources d’un site selon l’origine des requêtes
Valeur recommandée par OWASPsame-origin
Valeur retenue pour Lutècesame-site
Catégorie de pagetoutes les pages
Remarques- La valeur same-origin signifie que seules les requêtes provenant de la même origine peuvent accéder aux ressources de la page. Par exemple, un site externe ne pourra pas pointer directement dans son code sur des ressources du site ayant ce paramétrage. \n - Pour Lutèce, c’est la valeur moins restrictive same-site qui a été choisie afin de permettre aux sites Lutèce partageant le même domaine de pouvoir accéder aux ressources.
Compatibilité avec les navigateurs desktopChrome 73+ \n Edge 79+ \n Firefox 74+ \n Opera 60+ \n Safari 12+
Compatibilité avec les navigateurs mobilesChrome Android 73+ \n Firefox for Android 79+ \n Opera Android 52+ \n Safari on iOS 12+ \n Samsung Internet 11.0+ \n WebView Android 73+

Cache-Control exclamation-circle

DéfinitionPermet de contrôler le comportement de mise en cache du navigateur
Valeur recommandée par OWASPno-store, max-age=0
Valeur retenue pour Lutècemax-age=0, must-revalidate, no-cache, no-store, private
Catégorie de pagepages FO et BO avec authentification
Remarques- La valeur no-store indique aux clients (navigateurs et intermédiaires comme les proxies ou les CDN) de ne rien mettre dans le stockage permanent. Il faut noter que certains navigateurs continueront à utiliser le cache mémoire. Quant à la valeur max-age=0, elle demande aux clients à ce que les données soient mises en cache pendant 0 secondes (pas de mise en cache donc). Au-delà de cette limite, les données sont considérées comme périmées. \n - Dans l’absolu, le paramétrage recommandé par OWASP devrait suffire pour vider le cache mais, dans la pratique, il peut arriver que certains navigateurs continuent à utiliser le cache ou qu’ils ne supportent pas la directive no-store. Aussi, afin de maximiser les chances de vider le cache, les directives must-revalidate, no-cache et private ont été ajoutées au paramétrage recommandé pour Lutèce (cf. Grayduck). \n - La désactivation du cache n’est effectuée que sur les pages contenant des informations sensibles car cela peut avoir un impact sérieux sur les performances. De plus, certaines fonctionnalités ont besoin que les données soient mises en cache.
Compatibilité avec les navigateurs desktopChrome compatible \n Edge 12 \n Firefox compatible \n Opera compatible \n Safari compatible
Compatibilité avec les navigateurs mobilesChrome Android compatible \n Firefox for Android compatible \n Opera Android compatible \n Safari on iOS compatible \n Samsung Internet compatible \n WebView Android compatible

Liste des en-têtes de type API REST

Cette liste constitue l’ensemble des en-têtes à appliquer aux appels aux API REST d’après la note cheat sheet series sur la sécurité des API REST citée précédemment. Les en-têtes en lien avec des réponses générées au format html ont été ignorés car dans Lutèce, celles-ci ne sont pas générées dans ce format.

Cache-Control times-circle

DéfinitionPermet de contrôler le comportement de mise en cache du navigateur
Valeur recommandée par OWASPno-store
Valeur retenue pour Lutècepas de valeur car en-tête non retenu
Remarques- Le paramétrage recommandé n’a pas été retenu en premier lieu car certaines API ont besoin de stocker des données en local. La valeur no-store n’est donc pas adaptée au contexte de Lutèce.

Strict-Transport-Security check-circle

DéfinitionGarantit que les appels aux API sont effectués via HTTPS et protège contre les certificats usurpés
Valeur recommandée par OWASPmax-age=31536000; includeSubDomains
Valeur retenue pour Lutècemax-age=31536000; includeSubDomains
Remarques- Les valeurs recommandées signifient que ce fonctionnement s’appliquera pendant 31536000 secondes (soit 1 an) à compter de la première réponse fournie au client par le serveur et qu’il s’applique aussi aux sous-domaines. \n - Cet en-tête concerne les sites qui utilisent le protocole HTTPS. \n - Il est ignoré si les échanges client/serveur utilisent le protocole HTTP.

X-Frame-Options times-circle

DéfinitionSpécifie si la réponse peut être intégrée dans un élément <frame>, <iframe>, <embed> ou <object>. Il offre une protection contre les attaques par clickjacking
Valeur recommandée par OWASPdeny
Valeur retenue pour Lutècepas de valeur car en-tête non retenu
Remarques- La recommandation OWASP n’a pas été suivie car cet en-tête a été rendu obsolète par la directive frame-ancestors présente dans l’en-tête Content-Security-Policy.

X-Content-Type-Options times-circle

DéfinitionPermet d’indiquer au navigateur de ne pas essayer de deviner le type MIME d’une ressource et de se fier au contenu de l’en-tête Content-Type de la requête
Valeur recommandée par OWASPnosniff
Valeur retenue pour Lutècepas de valeur car en-tête non retenu
Remarques- Cet en-tête n’a pas été retenu car il n’est pas pertinent dans le contexte de Lutèce où les appels aux API REST sont utilisés par des services et dont les réponses sont renvoyées au format JSON (il n’y a pas de html généré).

Content-Security-Policy (CSP) check-circle

DéfinitionPermet de définir une couche de sécurité pour détecter ou atténuer certains types d’attaque dont les attaques XSS et les attaques par injection de données
Valeur recommandée par OWASPframe-ancestors ‘none’
Valeur retenue pour Lutèceframe-ancestors ‘none’
Remarques- Bien qu’une réponse à un appel à une API REST n’ait généralement pas pour vocation à être intégrée dans une frame, si toutefois le cas se présente, la valeur frame-ancestors ‘none’ empêche tout domaine d’ajouter la réponse renvoyée par l’API REST dans une frame afin de prévenir une attaque par clickjacking.

Content-Type times-circle

DéfinitionPermet de spécifier le type de contenu d’une réponse
Valeur recommandée par OWASPtype de contenu de la réponse
Valeur retenue pour Lutècetype de contenu de la réponse mais doit être ajouté par les API
Remarques- La génération de l’en-tête Content-Type dans les réponses incombe à l’API elle-même car c’est elle qui détient l’information du type de contenu de la réponse. Ce n’est pas au filtre chargé d’ajouter les en-têtes aux appels aux API REST de s’occuper de cet en-tête.

Glossaire

Domaine

Le domaine (ou nom de domaine) correspond à une adresse IP physique sur internet. Dans l’adresse http://lutece.paris.fr, paris.fr est le domaine.

Origine

L’origine est définie par le triplet protocole/hôte/port. Si le numéro de port n’est pas spécifié, il est égal à 80 si la connexion se fait en HTTP et 443 si la connexion se fait en HTTPS. Ainsi, 2 urls ont la même origine si elles ont exactement le même protocole, le même nom d’hôte et le même numéro de port comme les 2 urls suivantes : https://lutece.paris.fr/support/wiki/architecture-overview.html et https://lutece.paris.fr/support/wiki/plugin-wizard.html.

Same-origin policy

La politique de sécurité same-origin est implémentée dans les navigateurs et ne concerne que les scripts. Elle ne s’applique donc pas aux images, aux CSS et aux scripts chargés dynamiquement. Dans une page donnée, elle interdit l’exécution de scripts qui n’ont pas la même origine que celle de la page. Cette politique peut être assouplie par différents mécanismes dont le Cross-Origin Resource Sharing (CORS).

Site

Un site est un ensemble de pages web du même domaine maintenues par la même organisation. Contrairement à l’origine, le protocole et le numéro de port n’entrent pas en ligne de compte pour identifier un site. Les 2 urls suivantes ont le même domaine, le domaine ici étant paris.fr : https://www.paris.fr/, https://lutece.paris.fr/fr/.

Sous-domaine

Un sous-domaine est un domaine faisant partie d’un autre domaine. Par exemple, dans les adresses http://lutece.paris.fr et http://www.paris.fr, les sous-domaines sont respectivement lutece et www.

Informations utiles

  • Avec la console des navigateurs, il est possible de vérifier sur chaque page si les conditions définies pour un en-tête de sécurité sont respectées ou non. En cas de non-respect, un message explicite s’affiche dans la console comme ci-dessous avec Firefox : CSP_error_french

  • Avec les outils réseau des navigateurs (Menu “Réseau” > Sous-menu “En-têtes” > rubrique “En-têtes de la réponse” dans Firefox par exemple), il est possible d’afficher les en-têtes de sécurité qui sont renvoyés avec une réponse en cliquant sur la ligne correspondante à la page générée comme ci-dessous : liste_headers_console_french

  • Afin d’aider à modifier le paramétrage de l’en-tête Content-Security-Policy, il existe un autre en-tête nommé Content-Security-Policy-Report-Only qui est identique à Content-Security-Policy sauf qu’au lieu d’appliquer les restrictions définies, il ne fait qu’afficher les contraintes qui n’ont pas été respectées dans la console du navigateur. Il est également capable d’envoyer un rapport vers un endpoint de votre choix. Il peut être utilisé conjointement avec l’en-tête Content-Security-Policy pour valider progressivement un paramétrage donné.