Vérifier la sécurité de vos entêtes HTTP ☠

Une découverte intéressante pour sécuriser les entêtes de son site internet en modifiant vos directives serveur sur Nginx avec l’aide précieuse de securityheaders.io par Scott Helme.  L’exemple ci-dessous s’applique au site internet 123run.com.

HTTP Strict Transport Security (HSTS) header

HTTP Strict Transport Security (HSTS) est un mécanisme de politique de sécurité proposé pour HTTP, permettant à un serveur web de déclarer à un agent utilisateur (comme un navigateur web), compatible, qu’il doit interagir avec lui en utilisant une connexion sécurisée (comme HTTPS). La politique est donc communiquée à l’agent utilisateur par le serveur via la réponse HTTP, dans le champ d’en-tête nommé « Strict-Transport-Security ». Cette politique spécifie une période de temps durant laquelle l’agent utilisateur doit accéder au serveur uniquement de façon sécurisée.

add_header Strict-Transport-Security "max-age=31536000; includeSubdomains" always;

Cross-Site Scripting (XSS) header

Le cross-site scripting (ou XSS), est un type de faille de sécurité des sites web permettant d’injecter du contenu dans une page, permettant ainsi de provoquer des actions sur les navigateurs web visitant la page.

add_header X-Xss-Protection "1; mode=block" always;

X-Frame-Options « SAMEORIGIN » header

Protection contre le détournement de clics (ou clickjacking).

add_header X-Frame-Options "SAMEORIGIN" always;

X-Content-Type-Options header

Il s’agit d’une fonctionnalité de sécurité qui facilite la prévention des attaques basées sur la confusion du type MIME. Par exemple, si du CSS est attendu.

add_header X-Content-Type-Options "nosniff" always;

Referrer-Policy header

Referrer-Policy n’est pas seulement pour là supprimer la valeur de référence mais pour vous donner le contrôle de la valeur de référence.

add_header Referrer-Policy "no-referrer-when-downgrade";

Valeures de Referrer-Policy :

  • No-referrer — aucune information de référence n’est envoyée.
  • No-referrer-when-downgrade — c’est le comportement par défaut si aucune politique n’est spécifiée. Il passe toujours le chemin complet et passe une valeur de HTTPS→HTTPS mais pas HTTP→SHTTP.
  • Origin — envoie le domaine mais pas le chemin complet.
  • Origin-when-cross-origin — envoie le chemin d’accès complet sur le même domaine, mais seulement le domaine en passant à un autre site.
  • Same-origin — envoie le chemin d’accès complet s’il s’agit du même domaine, mais déduit la valeur en cas d’accès à un autre site.
  • Strict-origin — envoie le domaine pour HTTPS→HTTPS et HTTP→HTTP, mais pas HTTPS→HTTP.
  • Strict-origin-when-cross-origin — envoie le chemin complet si sur le même domaine et d’une page sécurisée à l’autre, envoie le domaine en allant de HTTPS sur un domaine vers un autre domaine, et ne passe pas d’un domaine sécurisé vers un domaine non sécurisé.
  • Unsafe-url — envoie le chemin complet.

Content Security Policy (CSP) header

Content Security Policy (ou CSP) est un mécanisme de sécurité permettant de restreindre l’origine du contenu (tel qu’un script Javascript, des images, des CSS, etc.) dans une page web à certains sites autorisés. Cela permet de mieux se prémunir d’une éventuelle faille XSS. Attention, l’exemple ci-dessous intègre les CSP spécifique au site internet d’exemple 123run.com. Vous devez évidement adapter selon vos besoins.

add_header Content-Security-Policy "default-src 'none';
    script-src 'self' 'unsafe-inline' 'unsafe-eval' 
        https://apis.google.com 
        www.google-analytics.com 
        *.googlesyndication.com 
        *.doubleclick.net 
        *.cloudflare.com 
        *.bootstrapcdn.com;
    style-src 'self' 'unsafe-inline' 
        https://fonts.googleapis.com
        *.bootstrapcdn.com;
    img-src 'self' data: 
        www.google.com 
        www.google.fr 
        www.google-analytics.com 
        *.cloudflare.com 
        *.doubleclick.net; 
    font-src 'self' 
        https://fonts.googleapis.com 
        https://fonts.gstatic.com 
        *.bootstrapcdn.com; 
        connect-src 'self'; 
    frame-src 'self' 'unsafe-inline' 
        *.doubleclick.net; 
    frame-ancestors 'none'; 
    form-action 'none'; 
    upgrade-insecure-requests; 
    block-all-mixed-content; 
    reflected-xss block; 
    base-uri 123run.com www.123run.com; 
    referrer no-referrer-when-downgrade";

HTTP Public Key Pinning (HPKP) header

L’extension de clé publique pour HTTP (HPKP) est une fonction de sécurité qui indique à un client Web d’associer une clé publique cryptographique spécifique à un certain serveur Web pour réduire le risque d’attaques MITM avec des certificats falsifiés. Exemple, pour un site example.com:

Public-Key-Pins: 
    pin-sha256="cUPcTAZWKaASuYWhhneDttWpY3oBAkE3h2+soZS7sWs="; 
    pin-sha256="M8HztCzM3elUxkcjR2S5P4hhyBNf6lHkmjAHKhpGPWE="; 
    max-age=5184000; includeSubDomains; 
    report-uri="https://www.example.com/hpkp-report"

Source photo: James Sutton

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *