Protéger votre site web : Tout ce que vous devez savoir sur les en-têtes de sécurité (security headers)

Protéger votre site web

La sécurité des sites web est devenue une préoccupation essentielle à l’ère numérique. Avec l’explosion de la connectivité en ligne, il est impératif de protéger les utilisateurs et les données sensibles contre les attaques malveillantes. Les attaquants exploitent souvent les vulnérabilités des sites web pour voler des informations confidentielles, injecter du code malveillant ou perturber les services en ligne. C’est pourquoi la mise en place de mesures de sécurité robustes est cruciale pour assurer l’intégrité, la confidentialité et la disponibilité des sites web.

Un aspect souvent négligé de la sécurité des sites web concerne les « security headers » (ou en-têtes de sécurité). Les security headers sont des instructions fournies par le serveur web aux navigateurs des utilisateurs, spécifiant des règles et des directives pour renforcer la sécurité. Ils peuvent aider à atténuer diverses attaques, telles que les attaques de type cross-site scripting (XSS), d’injection de contenu mixte ou de clickjacking. Dans cet article, nous allons explorer ce que sont précisément les security headers et comment ils peuvent améliorer la sécurité de votre site web.

I. Que sont les security headers ?

Les security headers sont des instructions que le serveur envoie au navigateur pour lui indiquer comment sécuriser les interactions entre eux. Une fois que le navigateur reçoit ces en-têtes de sécurité, il n’envoie plus de requêtes HTTP, mais reste plutôt sur le protocole sécurisé HTTPS.

II. Les différents types de security headers

Il existe plusieurs types de security headers, chacun ayant un rôle spécifique dans la sécurisation du site web. Voici quelques-uns des plus couramment utilisés :

Strict-Transport-Security (HSTS) :

Utilisé pour forcer la communication entre le navigateur et le serveur à être sécurisée (HTTP vers HTTPS). Cela aide à prévenir les attaques de type man-in-the-middle (MITM) et garantit une connexion sécurisée.

Referrer-Policy

Permet de contrôler quelles informations sont incluses dans l’en-tête « Referer » lorsqu’un utilisateur navigue d’une page web à une autre. Cela aide à protéger la vie privée des utilisateurs en limitant la divulgation d’informations.

X-Content-Type-Options

Indique au navigateur de ne pas deviner de façon automatique le type de média/contenu d’un fichier en se basant sur son contenu, ce qui aide à prévenir les attaques de type MIME sniffing et les scripts malveillants.

Si un fichier malveillant est mal interprété, cela peut permettre à un attaquant d’exécuter des scripts malveillants ou d’exploiter des vulnérabilités.

X-Frame-Options

Prévient les attaques telles que les attaques par clic, en empêchant une page de s’afficher dans un cadre (iframe/embed) ou en limitant les sites autorisés à inclure la page dans un cadre.

Permissions-Policy

Permet de contrôler les autorisations et les fonctionnalités auxquelles un site web peut accéder, comme la caméra, le micro, les notifications push, etc. Cela aide à renforcer la sécurité et la vie privée de l’utilisateur en limitant les accès non autorisés.

Content-Security-Policy

Permet de spécifier les sources autorisées pour différents types de ressources (comme les scripts, les styles, les images) sur une page web. Il aide à prévenir les attaques de type cross-site scripting (XSS) en limitant les sources de contenu approuvées et en bloquant les sources non autorisées.

III. Comment mettre en place les security headers ?

Pour tester la sécurité de votre site web au niveau des en-têtes de sécurité, il existe un outil en ligne très pratique pour ça : https://securityheaders.com. Vous pouvez simplement y accéder et cliquer sur le bouton « Scan ». Cela vous donnera une note allant de A à F, où « A » représente la meilleure note possible.

Mais comment configurer ces security headers exactement ? C’est en réalité très simple.

Sur Apache

Pour ajouter la configuration sur Apache, il faut ouvrir le fichier de configuration « .htaccess » pour le site que vous souhaitez sécuriser. Ce fichier est généralement situé à la racine du site web sur le serveur.

<ifModule mod_headers.c>
Header set Strict-Transport-Security "max-age=31536000" env=HTTPS
Header set X-Content-Type-Options nosniff
Header set X-Frame-Options sameorigin
Header set Referrer-Policy: no-referrer-when-downgrade
Header always set Permissions-Policy "accelerometer=(),autoplay=(),camera=(),encrypted-media=(),fullscreen=*,geolocation=*,gyroscope=(),magnetometer=(),microphone=(),midi=(),payment=(),sync-xhr=*,usb=(),xr-spatial-tracking=()"
</ifModule>

Sur NGINX

Pour ajouter la configuration sur NGINX, il faut ouvrir le fichier de configuration pour le site que vous souhaitez sécuriser. Ce fichier est généralement situé dans le répertoire « /etc/nginx/sites-available/ » sous Linux.

server {
    # Configurations des en-têtes de sécurité
    add_header Strict-Transport-Security "max-age=31536000" always;
    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options sameorigin;
    add_header Referrer-Policy "no-referrer-when-downgrade";
    add_header Permissions-Policy "accelerometer=(),autoplay=(),camera=(),encrypted-media=(),fullscreen=*,geolocation=*,gyroscope=(),magnetometer=(),microphone=(),midi=(),payment=(),sync-xhr=*,usb=(),xr-spatial-tracking=()" always;
}

Ce code ajoutera différentes directives dans les en-têtes de sécurité de votre site web. Par exemple, la directive Strict-Transport-Security indique au navigateur d’utiliser exclusivement HTTPS pendant une durée de 31536000 secondes (soit un an). Les autres directives, telles que X-XSS-Protection, X-Content-Type-Options, X-Frame-Options, Referrer-Policy et Permissions-Policy, fournissent également des mesures de sécurité supplémentaires pour protéger les visiteurs de votre site contre diverses vulnérabilités et attaques.

Il est important de souligner que l’ajout de ces security headers dans votre fichier « .htaccess » ou votre fichier de configuration NGINX améliore significativement la sécurité de votre site web. En obtenant une note parfaite sur https://securityheaders.com, vous pouvez être rassuré quant à la protection des communications entre votre navigateur et votre serveur.

En conclusion, les en-têtes de sécurité, ou security headers, sont un élément essentiel pour renforcer la sécurité de votre site web. En ajoutant les directives appropriées à votre site, vous pouvez garantir que les communications entre votre navigateur et votre serveur seront sécurisées et livrées en HTTPS. Alors n’oubliez pas de tester vos security headers et de prendre les mesures nécessaires pour améliorer la sécurité de votre site web.

En cas d’incertitude, n’hésitez pas à contacter notre équipe de professionnels pour vous guider là-dessus.

Picture of Nicolas Johnson

Nicolas Johnson

Partager la publication