Pourquoi les en-têtes manquent ou restent faibles
- Les configurations d'hébergement par défaut n'en incluent aucun. La plupart des serveurs web et plateformes n'ajoutent pas d'en-têtes de sécurité à moins que vous ne les configuriez explicitement.
- Une CSP est ajoutée une fois, puis jamais revue. À mesure qu'une application ajoute de nouveaux scripts tiers, embeds ou polices, une CSP statique écrite il y a un an les bloque silencieusement - ou pire, quelqu'un l'élargit avec un joker pour faire cesser les erreurs, annulant la politique.
- HSTS est ajouté sans les directives qui le rendent réellement efficace. Un en-tête
Strict-Transport-Securitynu avec unmax-agecourt et sansincludeSubDomainsnipreloadoffre une protection bien plus faible qu'il n'y paraît. - Des en-têtes obsolètes copiés d'un vieux tutoriel persistent, comme
X-XSS-Protection, que les navigateurs modernes ignorent ou qui peut lui-même introduire un risque.
Comment identifier le problème
C'est la capacité de sécurité la plus poussée de Scanverra. Le scanner de sécurité effectue une véritable analyse des directives CSP - vérifiant spécifiquement base-uri, form-action, object-src et frame-ancestors, ainsi que la détection de sources joker trop larges - et un contrôle de profondeur HSTS complet couvrant max-age, includeSubDomains et preload. Pour la directive preload spécifiquement, il effectue un appel en direct à l'API hstspreload.org pour confirmer que votre domaine est réellement dans la liste de préchargement de Chrome, pas seulement prétendre l'être. Il signale également les en-têtes obsolètes comme X-XSS-Protection, et associe chaque constat à une référence CWE et OWASP Top 10 - par exemple, un en-tête HSTS manquant correspond à CWE-319 et OWASP A05:2021 - afin que les constats se traduisent directement en documentation de conformité.
Comment le corriger
1. Ajoutez HSTS avec l'ensemble complet des directives
1Strict-Transport-Security: max-age=31536000; includeSubDomains; preloadAprès avoir ajouté preload, soumettez votre domaine sur hstspreload.org - la directive seule ne vous y inscrit pas, et le contrôle en direct de Scanverra continuera de signaler la lacune jusqu'à ce que la soumission soit réellement acceptée.
2. Rédigez une Content-Security-Policy adaptée à ce que votre site charge réellement
1Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self'; base-uri 'self'; form-action 'self'; object-src 'none'; frame-ancestors 'self'N'ajoutez des origines de confiance spécifiques à script-src/style-src qu'en cas de besoin réel - ne vous rabattez jamais sur un joker (*) ou une source uniquement de schéma (https:) simplement pour faire taire les erreurs de console, car cela annule entièrement l'objectif de la politique.
3. Ajoutez les en-têtes standards restants
1X-Content-Type-Options: nosniff
2X-Frame-Options: DENY
3Referrer-Policy: strict-origin-when-cross-originframe-ancestors dans votre CSP est le remplacement moderne de X-Frame-Options et est plus flexible - déployez les deux, car les navigateurs plus anciens ne respectent que l'en-tête historique.
4. Supprimez les en-têtes obsolètes plutôt que de les laisser en place
X-XSS-Protection est obsolète et OWASP recommande explicitement de le supprimer entièrement plutôt que de lui attribuer une valeur quelconque - une véritable CSP en est le remplacement moderne, pas un complément.
Comment Scanverra détecte cela
Le scanner de sécurité de Scanverra lit vos en-têtes de réponse en direct et effectue une véritable analyse au niveau des directives, pas un simple contrôle de présence - couverture des directives CSP et détection de jokers, profondeur des valeurs HSTS incluant une recherche en direct sur hstspreload.org, et détection d'en-têtes obsolètes, chaque constat étant associé à des références CWE, OWASP et PCI le cas échéant.