Le Vibe Coding Est-il Dangereux ? L'Angle Sécurité
Non, le vibe coding n'est pas dangereux en soi. C'est l'une des évolutions les plus marquantes du développement logiciel de ces dernières années. Il met une vraie capacité de création entre les mains de personnes qui ne pensaient jamais pouvoir lancer un produit. Mais — et c'est un "mais" qui compte — le vibe coding introduit des angles morts en sécurité dont la plupart des créateurs n'ont absolument pas conscience. Comprendre ces angles morts fait la différence entre lancer une application solide et exposer involontairement les données de vos utilisateurs à quiconque sait ouvrir les DevTools du navigateur.
Qu'est-ce que le vibe coding ?
Le vibe coding consiste à construire un logiciel en décrivant ce que l'on veut en langage naturel, et en laissant un outil IA — Cursor, Lovable, Bolt, Replit, v0 — générer le code à votre place. Vous vous concentrez sur la vision produit et l'expérience utilisateur. L'IA gère l'implémentation. Le terme a été inventé par Andrej Karpathy début 2025, et il s'est depuis transformé en un véritable mouvement : des dizaines de milliers de personnes livrent de vraies applications sans écrire une seule ligne de code traditionnel.
Pour une analyse approfondie, consultez notre guide complet sur la sécurité du vibe coding.
Les arguments en faveur du vibe coding
Avant de parler des risques, soyons honnêtes sur ce qui rend le vibe coding important. Le rejeter en bloc serait intellectuellement malhonnête.
La démocratisation de la création
Pendant des décennies, la capacité de créer un logiciel était réservée à ceux qui avaient suivi des années d'études en informatique ou s'étaient formés seuls dans la douleur. Le vibe coding brise cette barrière. Un patron de PME peut construire un outil interne. Un designer peut prototyper une application fonctionnelle. Un étudiant avec une idée de startup peut livrer un MVP en un week-end. C'est réellement puissant et ça mérite d'être salué.
La vitesse
Même les développeurs expérimentés utilisent les outils de vibe coding pour aller plus vite. Mettre en place une application full-stack qui aurait pris des jours ne prend plus que quelques heures. Les cycles d'itération passent de semaines à quelques après-midis. Pour les startups qui courent contre leur trésorerie, cet avantage de vitesse est existentiel.
Le prototypage et la validation
Le vibe coding excelle dans le test d'idées. Au lieu de passer des mois à construire quelque chose dont personne ne veut, vous pouvez avoir un prototype fonctionnel devant vos utilisateurs en quelques jours. La boucle "construire, mesurer, apprendre" n'a jamais été aussi courte.
Un coût de démarrage réduit
Pas besoin d'embaucher une équipe de développement pour votre première version. Pas besoin de dépenser 50 000 euros chez une agence. Un fondateur avec une vision claire et un bon outil IA peut aller remarquablement loin tout seul.
Ce sont de vrais avantages, substantiels. La question n'est pas de savoir si le vibe coding a de la valeur — c'est évident. La question est de savoir ce qu'il oublie.
Les angles morts en sécurité
Voici la vérité inconfortable : les générateurs de code IA sont optimisés pour produire du code qui fonctionne, pas du code qui est sécurisé. Ils sont entraînés pour satisfaire le prompt, et les exigences de sécurité ne font quasiment jamais partie du prompt.
Ce n'est pas un défaut des outils. C'est une conséquence naturelle de leur fonctionnement. Quand vous dites à Cursor "construis un tableau de bord utilisateur qui affiche les données du compte", il construira ce tableau de bord. Il ne demandera pas, de lui-même, si ce tableau vérifie que l'utilisateur connecté est autorisé à voir les données de ce compte précis. Il n'ajoutera pas de rate limiting pour empêcher les abus. Il ne s'assurera pas que les clés API sont stockées dans des variables d'environnement plutôt que codées en dur dans le frontend.
Voici les angles morts les plus courants que nous observons dans les applications vibe-codées :
1. Pas d'authentification réelle ou une authentification cassée
Les outils IA génèrent souvent des formulaires de connexion qui ont l'air corrects mais manquent d'une gestion de session digne de ce nom. Des tokens stockés dans le localStorage au lieu de cookies HttpOnly. Pas d'expiration de session. Pas de protection CSRF. L'interface dit "vous êtes connecté", mais le modèle de sécurité sous-jacent est fragile comme du papier.
2. Des secrets exposés dans le code client
C'est le problème le plus fréquent que nous détectons. Des clés API, des chaînes de connexion à la base de données et des identifiants de services se retrouvent dans les bundles JavaScript, visibles par quiconque ouvre les DevTools du navigateur. L'IA place la clé là où elle doit être pour que le code fonctionne — dans le fichier qui fait l'appel API — sans considérer que ce fichier est envoyé au navigateur.
Nous avons rédigé une analyse détaillée sur les clés API exposées dans les applications générées par IA si vous voulez aller plus loin.
3. Pas d'autorisation côté serveur
L'application vérifie peut-être les permissions dans l'interface — en cachant des boutons, en redirigeant des pages — mais les endpoints API derrière ces boutons acceptent les requêtes de n'importe qui. Un attaquant n'a pas besoin de voir votre bouton admin pour appeler votre API admin. C'est particulièrement courant dans les applications Next.js et Supabase où la frontière entre client et serveur est floue.
4. Des configurations de base de données par défaut
Supabase et Firebase sont les backends de choix de la plupart des vibe coders. Ce sont deux excellents services, mais leurs configurations par défaut sont permissives par conception — elles sont faites pour vous aider à démarrer rapidement. Le Row Level Security (RLS) est désactivé par défaut sur les nouvelles tables Supabase. Les règles de sécurité Firebase autorisent un accès ouvert en mode test. L'IA créera des tables et des collections sans resserrer ces paramètres, parce que le code fonctionne très bien sans.
5. Pas de rate limiting
Sans rate limiting, un seul attaquant peut marteler vos endpoints API des milliers de fois par seconde. Cela peut vider votre facturation à l'usage (Supabase, OpenAI, Vercel), aspirer l'intégralité de votre base de données, ou forcer par brute force les mots de passe de vos utilisateurs. Le code généré par IA n'inclut quasiment jamais de rate limiting, car ce n'est pas nécessaire pour que les choses "fonctionnent".
6. Des headers de sécurité manquants
Pas de Content-Security-Policy. Pas de X-Frame-Options. Pas de Strict-Transport-Security. Ces headers sont invisibles pour l'utilisateur et pour la définition que l'IA a de "fonctionnel", mais ils protègent contre des classes entières d'attaques comme le clickjacking, le XSS et les attaques par downgrade de protocole.
Des exemples concrets de ce qui tourne mal
Ce ne sont pas des scénarios hypothétiques. Ce sont des patterns que nous observons de façon répétée en scannant des applications vibe-codées.
Des clés API dans les bundles JavaScript
Un fondateur construit un SaaS avec Lovable en le connectant à OpenAI pour des fonctionnalités IA. La clé API OpenAI est placée directement dans le code frontend. N'importe qui peut l'extraire, l'utiliser pour faire des appels API sur le compte du fondateur, et générer une facture de plusieurs centaines voire milliers d'euros en quelques heures. Nous avons constaté cela avec des clés OpenAI, des clés secrètes Stripe et des identifiants de base de données.
// Ceci est dans votre bundle navigateur. Tout le monde peut le voir.
const openai = new OpenAI({
apiKey: "sk-proj-abc123..."
});
La clé anon Supabase utilisée comme clé admin
La clé anon de Supabase est faite pour être publique — elle est conçue pour une utilisation côté client, avec le RLS qui protège les données. Mais quand le RLS n'est pas activé (parce que l'IA ne l'a jamais activé), la clé anon devient de facto une clé admin. Quiconque possède cette clé peut lire, modifier ou supprimer n'importe quelle ligne dans n'importe quelle table. Nous voyons régulièrement des applications où les données utilisateur, les enregistrements de paiement et le contenu privé sont totalement exposés.
Pas de RLS sur les tables de données utilisateur
Un vibe coder construit une application où les utilisateurs stockent des notes privées. L'IA crée la table notes, met en place les opérations CRUD, et tout fonctionne parfaitement — pour l'utilisateur en cours. Mais sans politiques RLS, n'importe quel utilisateur authentifié peut lire les notes de tous les autres utilisateurs en modifiant simplement la requête. L'interface n'affiche que vos propres notes, mais la base de données n'a aucune restriction de ce type.
Une authentification qui n'existe que dans l'interface
L'application a une page de connexion, une page d'inscription et un bouton de déconnexion. Elle a l'air sécurisée. Mais les endpoints API qui servent les données utilisateur ne vérifient pas le token de session — ou le vérifient uniquement côté frontend avant d'envoyer la requête. Un attaquant peut appeler l'API directement et accéder aux données de n'importe quel utilisateur sans jamais se connecter.
Comment vibe coder en sécurité
Le vibe coding n'est pas forcément risqué. Voici des mesures concrètes et actionnables que tout vibe coder peut prendre, quel que soit son niveau technique.
1. Scannez votre application avant de la lancer
C'est la chose la plus impactante que vous puissiez faire. Un scanner de sécurité détectera les clés exposées, les headers manquants, les configurations de base de données ouvertes et d'autres problèmes en quelques minutes. Vous n'avez pas besoin de comprendre les détails techniques — corrigez simplement ce que le scanner signale.
2. Utilisez des variables d'environnement pour tous les secrets
Ne mettez jamais de clés API, de mots de passe de base de données ou d'identifiants de services directement dans votre code. Chaque plateforme (Vercel, Netlify, Replit) supporte les variables d'environnement. Dites à votre outil IA : "Utilise des variables d'environnement pour toutes les clés API et les secrets. Ne les code jamais en dur."
3. Activez le Row Level Security sur chaque table
Si vous utilisez Supabase, activez le RLS sur chaque table, sans exception. Écrivez des politiques qui garantissent que les utilisateurs ne peuvent accéder qu'à leurs propres données. Dites à Cursor ou Lovable : "Active le RLS sur toutes les tables et crée des politiques pour que les utilisateurs ne puissent lire et écrire que leurs propres lignes."
4. Ajoutez des vérifications d'authentification côté serveur
Ne faites pas confiance au frontend pour gérer le contrôle d'accès. Chaque endpoint API qui sert ou modifie des données utilisateur doit vérifier le token de session côté serveur. Dites à votre IA : "Ajoute des vérifications d'authentification côté serveur à chaque route API. Renvoie une erreur 401 si l'utilisateur n'est pas authentifié."
5. Ajoutez du rate limiting aux endpoints publics
Protégez vos endpoints de scan, de connexion, d'inscription et d'API avec du rate limiting. Cela empêche les abus et protège votre facturation. Upstash Redis rend cela simple même pour des configurations basiques.
6. Demandez explicitement la sécurité à l'IA
Les outils IA répondent à ce que vous leur demandez. Si vous ne mentionnez jamais la sécurité, vous n'obtiendrez pas de sécurité. Ajoutez des exigences de sécurité à vos prompts :
- "Assure-toi que toutes les routes API vérifient l'authentification"
- "Stocke tous les secrets dans des variables d'environnement"
- "Ajoute du rate limiting à cet endpoint"
- "Active le RLS et crée les politiques appropriées"
- "Ajoute des headers de sécurité à la réponse"
7. Relisez ce que l'IA génère
Vous n'avez pas besoin de comprendre chaque ligne de code, mais vous devriez repérer les signaux d'alerte évidents : des clés API en clair, des URL de base de données dans des fichiers frontend, et des endpoints qui ne vérifient pas qui les appelle.
Conclusion : Vibe coding + conscience de la sécurité = excellent
Le vibe coding n'est pas dangereux. C'est une nouvelle façon puissante de construire des logiciels, et il est là pour rester. Mais comme tout outil puissant, il exige une conscience de ses limites.
Le problème fondamental est simple : l'IA génère du code qui fonctionne, mais "fonctionnel" et "sécurisé" ne sont pas la même chose. La sécurité porte sur ce que le code ne permet pas, et l'IA ne raisonne pas en termes de restrictions à moins que vous ne le lui disiez.
La bonne nouvelle, c'est que le fossé est facile à combler. Vous n'avez pas besoin d'un diplôme en sécurité informatique. Vous avez besoin d'un scanner, de quelques bonnes habitudes, et de la conscience que la sécurité ne se fera pas toute seule.
Le vibe coding avec une conscience de la sécurité produit des applications rapides à construire, agréables à utiliser et sûres pour vos utilisateurs. Le vibe coding sans cette conscience est un pari avec les données de vos utilisateurs et votre réputation.
Scannez votre application vibe-codée gratuitement sur scanvibe.dev et découvrez où vous en êtes en moins de 60 secondes.