optimisation core web vitals 8 min

Ce que vous ne devez jamais partager sur Internet en tant que dev SEO

Rapports Lighthouse, fichiers .env, logs serveur : ces détails techniques que vous exposez sans le savoir et que Google voit. Protégez votre site de l'indexation indiscrète.

Par Julien Morel
Partager

On pense que la sécurité des données exposées sur Internet concerne les mots de passe et les numéros de carte. Pour un dev SEO, le vrai risque est plus sournois : ce sont les fichiers techniques qu’on laisse traîner sur un sous-domaine, les rapports de performance qu’on génère en public, les logs qu’on archive sans restriction. Ces données ne contiennent pas de secrets d’État, mais elles offrent à n’importe qui une cartographie de votre architecture, de vos points faibles et de votre stratégie de référencement. Et Google les lit avant vos concurrents.

Les rapports de performance que Google indexe à votre insu

Tu as déjà lancé un audit Lighthouse public pour vérifier un LCP à 3.8 secondes sur une landing produit. L’URL générée contient souvent un identifiant unique. Si elle n’est pas protégée, elle atterrit dans l’index de Google en quelques heures. Un coup d’œil dans la Search Console remonte ces pages orphelines. Pire, certains outils de monitoring tiers conservent un historique public de vos scores Core Web Vitals, avec le détail des éléments bloquants. Un concurrent qui tombe dessus sait exactement sur quel chantier vous êtes le plus vulnérable : il peut accélérer sur ce même point avant vous.

Pour éviter ça, on protège l’accès à ces outils par authentification. Si vous devez partager un rapport, exportez-le en statique et déposez-le sur un espace privé. Gardez en tête que tout ce qui passe par une URL publique non restreinte finira par être crawlé. Les métriques de performance ne sont pas des secrets militaires, mais elles décrivent l’état de votre site à un instant T. Cette transparence involontaire a déjà permis à des équipes de rattrapage de se positionner sur des mots-clés stratégiques en corrigeant un point que vous n’aviez pas encore traité.

Les fichiers de configuration égarés dans le déploiement

On est tombés de notre chaise en découvrant un .env accessible via l’URL https://client.com/.env. Le fichier contenait les clés d’API Stripe, de SendGrid et le jeton d’accès au repo GitHub privé. Le pire, c’est que le site était sous Next.js et que le fichier avait été inclus dans le dossier public par une règle de build mal écrite. Googlebot l’avait indexé sans sourciller.

Ce cas n’est pas isolé. Un next.config.js laissé en production avec l’option exportPathMap ou des env exposés en dur, un webpack.config.js de dev qui se retrouve en ligne, un package.json complet avec les numéros de version précis de chaque dépendance… Tout cela permet à un attaquant de savoir que vous tournez sous React 18.2.0 avec une version vulnérable de zod, par exemple. Les bots de reconnaissance automatisée ne s’embêtent pas à analyser le contenu, ils se contentent de récupérer les paths connus. Une simple requête curl -I /.env ou curl -I /config.js renvoie un 200 si le fichier est présent. Faites le test sur vos projets.

⚠️ Attention : une règle Disallow: /private/ dans le robots.txt n’empêche pas l’indexation si un lien entrant pointe vers le fichier. Le noindex conditionnel ou la protection par authentification restent les seuls vrais garde-fous.

Quand vous utilisez des IDE comme Cursor ou des assistants de code, faites attention aux fichiers de configuration qu’ils génèrent automatiquement. On a vu un config.json créé par un plugin d’extension contenir un token d’accès à l’API de l’éditeur. Si vous hésitez entre deux environnements de développement, notre comparatif Claude Code vs Cursor aborde les comportements par défaut de ces outils vis-à-vis de vos secrets, mais la vigilance reste la même : tout fichier source appartenant au build final doit être audité.

Les logs serveur en clair sur un bucket public

Certaines équipes poussent leurs logs de serveur sur un bucket S3 pour analyse, oubliant de restreindre l’accès. Résultat : https://logs.exemple.com/access-2026-05.log est accessible au monde entier. Le fichier contient chaque requête, avec l’User-Agent, l’IP d’origine, les chemins appelés, les codes de statut. En le parcourant, on identifie les URLs de staging encore actives, les endpoints d’API internes qui renvoient une erreur 500, et les patterns de crawl de Googlebot. On sait précisément quelles pages le moteur explore le plus lentement à cause d’un TTFB élevé.

Un attaquant utilise ces logs pour cartographier les points faibles. Il repère une série de 404 sur /admin/backup.sql et comprend qu’un backup a existé à cet emplacement. Il voit des requêtes POST vers /api/internal/user et devine une API non documentée. Les logs de build, ceux des runners CI/CD, sont tout aussi bavards : ils listent les variables d’environnement, les commandes de déploiement, parfois les credentials de base de données si on n’a pas configuré de masquage. Ne stockez jamais ces artefacts dans un espace public. Utilisez des buckets privés avec des stratégies de rétention courtes.

💡 Conseil : une simple règle dans votre CDN permet de bloquer l’accès à tous les chemins contenant *.log ou *.tmp. Mettez-la en place dès aujourd’hui, couplée à un header Cache-Control: no-store.

Les commentaires dans le code source qui en disent trop sur votre stack

Ouvrez les DevTools sur votre propre site. Vous trouvez un <!-- TODO: upgrade to Next.js 15.1.2 --> dans le HTML ou un // temporary fix for IE11 in /utils/legacy.js dans un bundle non minifié. C’est une carte de visite pour un attaquant. Il sait que vous utilisez une version spécifique et peut croiser ça avec les CVEs connues. Une ligne de commentaire anodine réduit le temps de reconnaissance à quelques minutes.

Vérifier que vous ne partagez rien de sensible en 3 commandes

Tu peux scanner ton propre site en trois étapes. La première, c’est un grep sur le répertoire de build pour trouver les motifs sensibles avant déploiement : grep -rE "(SECRET|KEY|TOKEN|PASSWORD)" ./dist. Si un résultat remonte, ton bundler laisse passer des variables qu’il ne devrait pas. La deuxième, c’est une série de curls sur les chemins critiques juste après la mise en ligne : curl -I https://ton-site.com/.env, curl -I https://ton-site.com/config.json, curl -I https://ton-site.com/debug.log. Un 200 doit déclencher une alerte immédiate. La troisième, c’est la Search Console : exporte la liste des URLs indexées et filtre sur les extensions .log, .env, .json, .sql. Tu seras surpris.

Ces vérifications prennent moins de cinq minutes. Automatise-les dans ton pipeline CI : un job qui échoue si un fichier sensible est exposé en production ou si une URL interdite renvoie autre chose qu’un 404. Pour les sites avec un state management complexe, vérifie aussi que les données du store client ne se retrouvent pas dans des variables globales accessibles par console. Un store Zustand mal isolé peut exposer l’état de session de vos utilisateurs. Sur ce point, notre article sur le state management avec Zustand détaille les bonnes pratiques pour éviter ce type de fuite.

Évitez de partager publiquement des captures d’écran DevTools sur les réseaux sociaux sans avoir flouté les en-têtes sensibles et les URLs internes. On a déjà vu fuiter des tokens par une simple copie d’écran du panneau Réseau. La sécurité n’est pas qu’une affaire de configuration serveur, elle passe aussi par des réflexes humains.

Questions fréquentes

Si mon site utilise un robots.txt restrictif, est-ce suffisant pour protéger ces fichiers ?

Non. Le robots.txt empêche le crawl mais pas l’indexation si Google découvre l’URL via un lien externe ou une sitemap mal conçue. Il faut soit bloquer l’accès au niveau HTTP (401, 403), soit ajouter un en-tête X-Robots-Tag: noindex, nofollow, soit idéalement les deux.

Que faire si des données sensibles sont déjà indexées dans Google ?

Utilisez l’outil de suppression d’URL de la Search Console pour un retrait temporaire. En parallèle, corrigez la faille en supprimant le fichier ou en restreignant son accès, puis configurez une redirection 404 ou 410 pour que l’URL disparaisse définitivement de l’index. Conservez une veille sur les caches de Google.

Les logs de serveur sont-ils vraiment risqués s’ils ne contiennent que des User-Agent et des IP ?

Absolument. Un attaquant peut corréler les adresses IP avec vos flux internes, identifier les plages horaires de maintenance à partir des périodes d’inactivité des logs, et utiliser les User-Agent pour déterminer la version exacte de votre stack backend. C’est un jeu de puzzle : chaque pièce semble anodine, mais l’assemblage dessine une carte complète de votre infrastructure.

Articles similaires

Julien Morel

Julien Morel

Ancien dev front React passé SEO technique après une migration e-commerce qui a fait perdre 60% du trafic organique à son employeur en une nuit (fichier robots.txt oublié en staging). Depuis, il écrit pour que ça n'arrive à personne d'autre et teste sur ses propres side-projects avant de publier quoi que ce soit.

Cet article est publie a titre informatif. Faites vos propres recherches avant toute decision.