Aller au contenu
iseeu.cc

En-têtes de sécurité

Saisissez une URL publique : iseeu.cc la demande depuis le réseau de Cloudflare, suit les éventuelles redirections, liste tous les en-têtes de réponse et note ceux qui touchent à la sécurité, de A+ à F.

Le serveur d'iseeu.cc demande cette URL depuis le réseau de Cloudflare. Ports 80 et 443 uniquement, hôtes publics uniquement (pas iseeu.cc lui-même), 10 vérifications par minute ; l'URL n'est pas conservée.

En bref

Une page obtient une bonne note ici quand elle envoie HSTS avec un max-age d'au moins 31 536 000 secondes (un an, le minimum qu'accepte la liste de préchargement HSTS), une Content-Security-Policy qui restreint les scripts, une protection contre l'intégration dans un cadre, X-Content-Type-Options: nosniff, une Referrer-Policy, une Permissions-Policy et une Cross-Origin-Opener-Policy. Les sept contrôles totalisent 100 points : 95 ou plus donne A+, 85 A, 70 B, 55 C, 40 D, en dessous F.

Comment c'est obtenu

Le serveur d'iseeu.cc demande l'URL depuis le réseau de Cloudflare (HEAD, ou GET si HEAD est refusé), suit jusqu'à cinq redirections en contrôlant chaque étape par rapport aux adresses privées et réservées, et lit les en-têtes de la réponse finale sans télécharger le corps. Barème : HSTS 25, CSP 20, protection contre l'intégration (frame-ancestors dans la CSP ou X-Frame-Options) 15, nosniff 10, Referrer-Policy 10, Permissions-Policy 10, Cross-Origin-Opener-Policy 10. Un réglage faible rapporte une partie des points : un HSTS de moins d'un an obtient 12, une CSP qui autorise les scripts inline, eval ou des sources de script génériques (wildcard) obtient 10.

Exemple

Une réponse avec Strict-Transport-Security: max-age=31536000, Content-Security-Policy: default-src 'self'; frame-ancestors 'none', X-Content-Type-Options: nosniff et Referrer-Policy: no-referrer obtient 25 + 20 + 15 + 10 + 10 = 80 points, soit la note B. Avec en plus une Permissions-Policy et Cross-Origin-Opener-Policy: same-origin, elle atteint 100, soit A+.

Limites

  • La note ne porte que sur les en-têtes de réponse, pas sur les réglages TLS, le contenu des cookies ni le code de la page.
  • La requête vient de Cloudflare : un site peut donc lui répondre autrement qu'à votre navigateur (défis anti-robots, redirections selon le pays).
  • iseeu.cc lui-même, les adresses privées et les ports autres que 80 et 443 ne sont pas testés.

Sources

Sources vérifiées le . Page mise à jour le .

Ce que fait l'outil

Les en-têtes de réponse indiquent au navigateur comment traiter une page : faut-il imposer HTTPS, quels scripts ont le droit de s'exécuter, qui peut l'afficher dans un cadre. Ce test demande votre URL depuis le serveur d'iseeu.cc, sur le réseau de Cloudflare (HEAD d'abord, GET si le serveur refuse HEAD), ignore le corps de la réponse sans le lire et note les en-têtes de sécurité reçus.

Les contrôles notés :

  • Strict-Transport-Security (HSTS). Demande au navigateur de n'utiliser que HTTPS pour cet hôte pendant max-age secondes : les visites suivantes n'envoient plus jamais de requête en HTTP simple qu'une personne sur le même Wi-Fi public pourrait détourner. Un an (31536000) ou plus est jugé satisfaisant ; includeSubDomains et preload sont signalés. Envoyé en HTTP simple, l'en-tête est ignoré.
  • Content-Security-Policy (CSP). Indique d'où peuvent provenir les scripts et les autres ressources. Si un attaquant parvient à glisser une balise <script> dans un champ de commentaire, script-src 'self' l'empêche de s'exécuter. 'unsafe-inline' ou 'unsafe-eval' dans script-src affaiblissent cette protection, puisque le code inline injecté et eval() s'exécutent alors malgré tout. frame-ancestors est également vérifié.
  • Protection contre le clickjacking. Une page malveillante peut afficher la vôtre dans un cadre transparent posé sur un faux bouton, de sorte que le clic du visiteur atterrit sur votre page. X-Frame-Options: DENY ou SAMEORIGIN, ou la directive CSP frame-ancestors 'none' ou 'self', l'empêche ; l'un ou l'autre suffit pour ce contrôle.
  • X-Content-Type-Options: nosniff. Oblige le navigateur à se fier au Content-Type déclaré : un fichier texte téléversé qui contient du JavaScript et qui est servi en text/plain ne peut pas être exécuté par une balise script.
  • Referrer-Policy. Avec strict-origin-when-cross-origin, une page située à /reset?token=abc123 ne transmet aux sites tiers, dans l'en-tête Referer, que son schéma et son hôte, pas le jeton.
  • Permissions-Policy. Désactive les fonctions du navigateur inutiles pour la page et pour tout ce qu'elle intègre. Avec camera=(), microphone=(), geolocation=(), un cadre publicitaire ou un script compromis ne peut même pas les demander.
  • Cross-Origin-Opener-Policy (COOP). same-origin donne à votre page son propre groupe de contextes de navigation : une fenêtre d'un autre site qui l'a ouverte, ou qu'elle a ouverte, perd sa référence et ne peut ni la faire naviguer ni l'inspecter.

Signalés mais non notés : les valeurs de Server et de X-Powered-By, comme Apache/2.4.41 (Ubuntu) ou PHP/7.4.3, qui permettent de rapprocher plus vite un site de vulnérabilités connues, ainsi que les attributs de chaque Set-Cookie : Secure (HTTPS uniquement), HttpOnly (invisible pour JavaScript) et SameSite (limite l'envoi lors des requêtes intersites).

La note est un résumé heuristique, pas un audit de sécurité. Les en-têtes ne sont qu'une couche ; ils ne corrigent ni une injection SQL ni un CMS laissé sans mises à jour.

Mode d'emploi

  1. Saisissez une URL publique complète qui commence par http:// ou https://.
  2. Lancez la vérification. Elle abandonne au bout de 5 secondes.
  3. Lisez la chaîne de redirections. Jusqu'à 5 redirections sont suivies, et chaque étape affiche son code de statut et son en-tête Location.
  4. Lisez le code de statut final, la note et la liste des en-têtes de réponse.

Seuls les ports 80 et 443 sont autorisés. Les adresses privées, de bouclage, lien-local, de NAT opérateur et les autres adresses réservées sont refusées, tout comme localhost et les noms en .local ou .internal. iseeu.cc lui-même est aussi refusé, y compris par le biais d'une redirection qui aboutit ici, car le test rappellerait le même serveur ; pour voir les en-têtes de ce site, utilisez plutôt curl -sI https://iseeu.cc/. Chaque adresse IP a droit à 10 vérifications par minute. L'URL n'est ni stockée ni journalisée.

Le site visé reçoit une requête de Cloudflare et non de vous : un défi anti-robot, une redirection selon le pays ou un serveur qui traite HEAD autrement que GET peut donc modifier le résultat.

Cas d'usage

  • Après une mise en production. Vérifiez qu'un changement de proxy ou de CDN n'a pas fait disparaître d'en-têtes, par exemple HSTS envolé après le remplacement d'un répartiteur de charge.
  • Redirections propres. Vérifiez que http:// mène à https:// en une seule étape et que le domaine nu et www aboutissent à une seule et même adresse.
  • Évaluation d'un prestataire. Avant d'intégrer la page de connexion ou de paiement d'un prestataire, regardez si elle accepte seulement d'être affichée dans un cadre.
  • Versions trop bavardes. Repérez un en-tête Server ou X-Powered-By qui donne une version précise.
  • Contrôle des cookies. Assurez-vous que les cookies de session portent Secure, HttpOnly et SameSite avant qu'un auditeur ne le relève.
  • Mise en place d'une CSP. Une fois sorti du mode report-only, vérifiez que la politique appliquée est bien en ligne et sans 'unsafe-inline'.

Une base raisonnable

Un bon point de départ pour un site qui sert ses propres scripts et feuilles de style :

Strict-Transport-Security: max-age=31536000; includeSubDomains
Content-Security-Policy: default-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'none'
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy: camera=(), microphone=(), geolocation=()
Cross-Origin-Opener-Policy: same-origin

X-Frame-Options reprend frame-ancestors pour les navigateurs plus anciens. Cette CSP bloque les scripts inline, les gestionnaires d'événements inline comme onclick et les styles inline : testez-la avant de l'appliquer. Si vos propres pages affichent le site dans un cadre, utilisez plutôt 'self' et SAMEORIGIN.

Déployer la CSP en mode report-only

Envoyez la politique sous le nom Content-Security-Policy-Report-Only : le navigateur ne bloque rien, il consigne les violations dans la console et les transmet au point de collecte que vous avez configuré. Laissez-la tourner sur le trafic habituel, corrigez ce qui remonte, puis renommez l'en-tête. Vous pouvez aussi appliquer une politique souple et essayer en parallèle une politique plus stricte. Un en-tête report-only à lui seul ne protège personne.

Le préchargement HSTS engage pour longtemps

Ajouter preload et soumettre le domaine l'inscrit sur une liste intégrée à Chrome et reprise par Firefox, Safari et Edge : les navigateurs évitent alors HTTP simple dès la première visite. La liste exige includeSubDomains et un max-age d'au moins un an, si bien que chaque sous-domaine, jusqu'à un hôte intranet oublié ou la page d'administration d'une imprimante, doit servir un HTTPS valide. Le retrait est lent, car il n'atteint les gens qu'au fil des mises à jour de leur navigateur. Commencez par un max-age de 300 par exemple, augmentez-le quand plus rien ne casse, et ne passez au préchargement qu'en dernier.

Inutile d'envoyer X-XSS-Protection

Les filtres XSS des navigateurs que pilotait cet en-tête ont disparu : Chrome a retiré son XSS Auditor en 2019, Edge a abandonné son filtre, Firefox n'en a jamais eu, et ces filtres pouvaient être détournés pour désactiver des scripts choisis. Envoyez X-XSS-Protection: 0 ou rien du tout, et comptez sur la CSP.

Vérifier avec curl

curl -sI https://iseeu.cc/
curl -sIL http://iseeu.cc/
curl -s -D - -o /dev/null https://iseeu.cc/

La première commande affiche les en-têtes d'une seule réponse HEAD, y compris les en-têtes propres à une redirection, que la liste des étapes de cet outil laisse de côté. La deuxième suit les redirections et affiche chaque réponse. La troisième envoie GET et jette le corps, pour les serveurs qui traitent HEAD différemment. Ajoutez | grep -i strict-transport pour isoler un en-tête ; les noms ne tiennent pas compte de la casse, et HTTP/2 les envoie en minuscules.

Questions fréquentes

Une note A+ veut-elle dire que mon site est sécurisé ?

Non. La note résume une poignée d'en-têtes de réponse qui compliquent certaines attaques côté navigateur. Elle ne dit rien des mises à jour, de l'authentification, du contrôle d'accès, des failles d'injection ni de la façon dont les secrets sont stockés. Un site peut obtenir A+ et laisser fuiter des données par une API défaillante, tandis qu'un site moins bien noté peut être bien tenu. Voyez-la comme un coup d'œil rapide sur une seule couche, pas comme un audit.

Pourquoi les en-têtes affichés ici ne sont-ils pas les mêmes que dans mon navigateur ?

La requête part du réseau de Cloudflare, pas de votre appareil, et c'est une requête HEAD, sauf si le serveur refuse HEAD. Beaucoup de sites adaptent leur réponse au pays, au fait qu'ils croient avoir affaire à un robot ou à la méthode de la requête. Un défi anti-robot, une redirection géographique ou un framework qui traite HEAD à part produiront chacun des en-têtes différents. Lancez curl depuis votre propre machine pour comparer.

Puis-je tester un serveur de mon réseau domestique ou de mon entreprise ?

Non. L'outil ne se connecte que sur les ports 80 et 443 et refuse les adresses privées, de bouclage, lien-local et de NAT opérateur (CGNAT), les autres plages réservées, ainsi que les noms comme localhost ou se terminant par .local ou .internal. Il ne peut donc pas servir à atteindre des machines situées derrière le pare-feu de quelqu'un d'autre. Pour un hôte interne, lancez curl -I depuis une machine de ce réseau.

L'URL que je teste est-elle enregistrée quelque part ?

L'URL n'est ni stockée ni journalisée. iseeu.cc ne conserve aucun journal des adresses IP ni des recherches, n'a pas de base de données de visiteurs et ne dépose aucun cookie. Le site testé reçoit bien une requête, mais elle provient du réseau de Cloudflare et non de votre propre adresse IP.

Les réglages de sécurité placés dans une balise meta HTML sont-ils pris en compte ?

Non. L'outil ne lit que les en-têtes de réponse et ignore le corps sans le lire : une politique placée dans une balise meta http-equiv n'est donc jamais vue. Les navigateurs limitent eux aussi les balises meta : une CSP transmise ainsi ignore frame-ancestors et ne peut pas fonctionner en mode report-only, et HSTS comme X-Frame-Options n'y sont pas du tout pris en compte. Les vrais en-têtes HTTP restent l'endroit fiable pour tous ces réglages.

Que se passe-t-il avec une longue chaîne de redirections ou un serveur lent ?

L'outil suit jusqu'à 5 redirections, en affichant le code de statut et l'en-tête Location de chaque étape, et abandonne au bout de 5 secondes. Une chaîne qui demande davantage d'étapes trahit généralement une erreur de configuration, par exemple http et https, ou le domaine nu et www, qui se renvoient les visiteurs. Chaque étape de plus coûte aussi un aller-retour aux vrais visiteurs avant que la page commence à se charger.

La note ne regarde que les en-têtes de réponse d'une seule requête, envoyée depuis un seul endroit. Voyez-y une piste de travail plutôt qu'un verdict sur la sécurité globale d'un site.