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-agesecondes : 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 ;includeSubDomainsetpreloadsont 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é eteval()s'exécutent alors malgré tout.frame-ancestorsest é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: DENYouSAMEORIGIN, ou la directive CSPframe-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/plainne peut pas être exécuté par une balise script. - Referrer-Policy. Avec
strict-origin-when-cross-origin, une page située à/reset?token=abc123ne 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-origindonne à 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
- Saisissez une URL publique complète qui commence par
http://ouhttps://. - Lancez la vérification. Elle abandonne au bout de 5 secondes.
- 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.
- 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-originX-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.