En-têtes de sécurité HTTP
Définition courte
Les en-têtes de sécurité HTTP sont de petites instructions serveur envoyées au navigateur qui préviennent des types d'attaques précis.
Au chargement d'une page, le serveur envoie avec le contenu une série d'en-têtes invisibles. Les en-têtes de sécurité HTTP en forment le sous-ensemble qui indique au navigateur ce qui n'est pas autorisé sur cette page.
Content-Security-Policy bloque l'exécution de scripts malveillants, Strict-Transport-Security empêche de retomber sur une connexion non chiffrée, X-Frame-Options empêche que le site soit intégré discrètement dans une autre page. Chaque en-tête verrouille un type d'attaque différent.
Un certificat SSL chiffre les données, mais sans ces en-têtes, d'autres portes restent ouvertes via le comportement du navigateur, les deux se complètent, aucun ne remplace l'autre.
Il est possible de vérifier quels en-têtes de sécurité une page envoie réellement sans toucher au code, en ouvrant les outils de développement du navigateur, en passant à l'onglet Réseau et en examinant les en-têtes de réponse d'une requête quelconque. C'est un moyen de contrôle rapide et accessible sans compétence technique poussée, si un en-tête donné n'y apparaît jamais, c'est qu'il n'a simplement jamais été défini côté serveur.
Pourquoi c'est important
L'absence d'en-têtes de sécurité laisse aux attaquants la possibilité d'injecter du code ou d'usurper le site, et cela passe généralement inaperçu pendant des mois. Des en-têtes bien configurés ferment ces portes sans coût serveur supplémentaire.
Exemple illustratif
Un prestataire de paiement a découvert lors d'un audit de sécurité que l'en-tête Content-Security-Policy n'avait jamais été défini, l'ajouter a pris une heure et a transformé tout le résultat de l'audit.
