L'ANSSI (Agence nationale de la sécurité des systèmes d'information) publie des recommandations de durcissement web largement suivies par les administrations et entreprises françaises, qui insistent notamment sur les en-têtes Strict-Transport-Security (HSTS, pour forcer HTTPS) et Content-Security-Policy (pour restreindre les sources de scripts autorisées). Vérifier leur présence est souvent l'une des premières étapes d'un audit de sécurité web en France.
En-têtes de requête contre en-têtes de réponse
Les en-têtes de requête (comme Accept, User-Agent, Cookie) le navigateur les envoie au serveur, se décrivant lui-même et ses attentes. Les en-têtes de réponse (Content-Type, Set-Cookie, Cache-Control) le serveur les renvoie, décrivant les données retournées et des instructions pour le navigateur.
À quoi sert Content-Type
L'en-tête Content-Type indique au navigateur comment interpréter le corps de la réponse : comme une page HTML, des données JSON, une image ou un fichier à télécharger. Sans la bonne valeur ici, le navigateur peut essayer d'afficher du JSON comme du texte brut, ou au contraire mal traiter du HTML.
Comment Cache-Control gère la mise en cache
Des valeurs comme max-age=3600 ou no-cache indiquent au navigateur et aux proxys intermédiaires combien de temps une version mise en cache d'une ressource peut être utilisée sans nouvelle requête au serveur. Une mauvaise configuration de cet en-tête est une cause fréquente pour laquelle les utilisateurs voient une version obsolète d'un site.
Pourquoi c'est utile
- Diagnostiquer pourquoi un navigateur affiche mal la réponse d'une API.
- Vérifier la présence des en-têtes de sécurité recommandés par l'ANSSI avant une mise en production.
- Confirmer qu'un site est servi en HTTPS — condition obligatoire pour que fonctionne la Web Crypto API dont dépendent les outils de hachage et de JWT de ce site.
Pourquoi un en-tête apparaît parfois plusieurs fois
HTTP autorise le même en-tête à apparaître plusieurs fois dans une réponse — le cas le plus courant étant plusieurs lignes Set-Cookie, une pour chaque cookie défini. La plupart des autres en-têtes répétés peuvent être combinés en une seule valeur séparée par des virgules sans changer leur signification, mais Set-Cookie est une exception délibérée, car une virgule peut légitimement faire partie de la valeur d'un cookie.