[{"data":1,"prerenderedAt":905},["ShallowReactive",2],{"blog-fr-is-v0-safe":3,"blog-index-fr":554},{"id":4,"title":5,"body":6,"category":508,"cover":509,"coverAlt":510,"description":511,"draft":512,"extension":513,"faq":514,"image":532,"keywords":533,"meta":543,"navigation":544,"ogTitle":5,"path":545,"published":546,"seo":547,"stem":548,"tldr":549,"updated":546,"__hash__":553},"blog_fr\u002Fblog\u002Fis-v0-safe.md","Sécurité de v0 : les 1 790 applications scannées ont toutes eu A",{"type":7,"value":8,"toc":494},"minimark",[9,18,21,29,34,37,40,63,66,91,95,98,122,134,147,153,164,168,171,174,186,190,193,206,212,224,228,231,240,243,248,265,272,276,279,291,294,318,326,330,333,374,381,385,391,400,418,421,431,448,451,459,463,486],[10,11,12,13,17],"p",{},"Vous avez décrit une application à v0, vous l’avez regardé la construire, et il\nvous a rendu un lien qui se termine par ",[14,15,16],"code",{},"vusercontent.net",". Elle fonctionne,\nelle a l’air finie, et vous l’avez peut-être déjà envoyée à quelqu’un. Avant que\nde vrais clients y tapent leurs coordonnées, vous avez cherché la sécurité de\nv0, et une partie de ce qui est remonté était une histoire d’attaquants qui\nutilisaient v0 pour construire de fausses pages de connexion.",[10,19,20],{},"Cette histoire parle de ce que d’autres font avec l’outil. Cet article parle de\nl’application que vous avez faite avec, et pour cela nous avons une mesure. Du\n12 au 14 août 2026, nous avons lancé les neuf mêmes vérifications externes que\nn’importe qui peut lancer gratuitement sur notre page d’accueil sur 30 998\napplications en ligne, et 1 790 d’entre elles étaient des applications v0. Les\n1 790 ont toutes eu A.",[10,22,23,24,28],{},"Voici ce qu’un classement comprend de travers : ",[25,26,27],"strong",{},"ce A en dit plus sur ce qu’il\ny avait à vérifier que sur v0."," Lu comme un classement, il fait de v0 le\nbuilder le plus sûr que nous ayons mesuré. Lu avec ses dénominateurs, il décrit\ndes frontends sans rien derrière, et il cesse de décrire le vôtre le jour où vous\nconnectez une base de données.",[30,31,33],"h2",{"id":32},"v0-est-il-sûr","v0 est-il sûr ?",[10,35,36],{},"Sur tout ce que nous avons pu mesurer de v0 lui-même, oui. Sa seule trouvaille\nappartient au domaine depuis lequel v0 sert votre application, et rien d’autre\nn’est apparu sur aucune des 1 790, dans aucune des neuf vérifications. Ce que\ncela ne peut pas vous dire, c’est comment votre application se comporte une fois\nqu’elle contient des données, parce que presque aucune de celles-ci n’en\ncontenait.",[10,38,39],{},"Imaginez un aperçu v0 comme un classeur à tiroirs dans une salle d’exposition.\nLes tiroirs coulissent, les étiquettes sont posées, n’importe quel passant peut\nen ouvrir un, et chaque tiroir est vide. Nos vérifications ont essayé chaque\ntiroir et n’ont rien trouvé dans aucun, ce qui est un compte rendu exact d’un\nclasseur vide.",[10,41,42,43,45,46,53,54,57,58,62],{},"À quel point il est vide, les chiffres le disent. Seules 17 des 1 790 citaient\nun projet Supabase quelque part dans le code qu’elles publient, et sur les 17\nnotre vérification de base de données n’a pas obtenu de réponse qu’elle pouvait\njuger, donc le nombre de tables lisibles sur v0 est de zéro sur zéro. Les 1 790\nétaient servies depuis ",[14,44,16],{},", que Vercel décrit dans sa\n",[47,48,52],"a",{"href":49,"rel":50},"https:\u002F\u002Fgithub.com\u002Fpublicsuffix\u002Flist\u002Fpull\u002F2121",[51],"nofollow","demande d’inscription à la Public Suffix List","\ncomme l’endroit « où nous hébergeons le contenu soumis par les utilisateurs »\nde v0. Une application que vous publiez part vers une adresse ",[14,55,56],{},"vercel.app"," ou un\ndomaine à vous, où rien ne la signale comme v0 de l’extérieur, donc celles-là ne\nsont pas dans le compte. La méthode et les données complètes sont\n",[47,59,61],{"href":60},"\u002Fresearch\u002Fvibe-coded-app-security-2026","dans le rapport",".",[10,64,65],{},"« v0 est-il sûr » recouvre donc trois questions :",[67,68,69,76,85],"ol",{},[70,71,72,75],"li",{},[25,73,74],{},"L’outil."," Ce que v0 vérifie dans le code qu’il écrit, et ce qu’il refuse\nde publier. Cette partie relève de Vercel, et elle est documentée.",[70,77,78,81,82,84],{},[25,79,80],{},"L’aperçu."," Le classeur dans la salle d’exposition, à son adresse\n",[14,83,16],{},". Toutes les applications que nous avons mesurées en\nétaient à ce stade.",[70,86,87,90],{},[25,88,89],{},"L’application que vous remplissez."," Le même code une fois qu’il contient\nles dossiers de vos clients, ou qu’il tourne sur votre propre domaine. Presque\nrien de ce que nous avons mesuré n’en était arrivé là.",[30,92,94],{"id":93},"ce-que-couvre-la-sécurité-de-v0-avant-la-publication","Ce que couvre la sécurité de v0 avant la publication",[10,96,97],{},"Trois choses, et la documentation de v0 nomme chacune d’elles.",[10,99,100,103,104,109,110,113,114,116,117,121],{},[25,101,102],{},"Il relit le code qu’il a écrit."," La\n",[47,105,108],{"href":106,"rel":107},"https:\u002F\u002Fv0.app\u002Fdocs\u002Fsecurity",[51],"page sécurité"," de v0 dit que tout code généré\n« passe par une analyse de sécurité avant son exécution », et que v0 « analyse\nl’usage de ",[14,111,112],{},"NEXT_PUBLIC_"," et avertit les utilisateurs des risques de sécurité\npossibles ». ",[14,115,112],{}," est le préfixe qui dit à Next.js, le framework dans\nlequel v0 écrit, de mettre une valeur dans le code que chaque visiteur\ntélécharge.\n",[47,118,120],{"href":119},"\u002Fblog\u002Fvite-and-next-public-env-vars","Ce que ce préfixe fait à une clé"," fait\nl’objet d’un article à part.",[10,123,124,127,128,133],{},[25,125,126],{},"Il refuse certains déploiements."," En\n",[47,129,132],{"href":130,"rel":131},"https:\u002F\u002Fvercel.com\u002Fblog\u002Fv0-vibe-coding-securely",[51],"août 2025",", Vercel a écrit\nque v0 avait bloqué plus de 17 000 déploiements dans les 30 jours précédents\npour des secrets exposés seulement, et plus de 100 000 déploiements non sûrs\ndepuis son lancement. Ce sont les chiffres de Vercel sur le blocage de Vercel,\nqui s’applique aux déploiements sur Vercel. Une partie de notre zéro peut être\nl’œuvre de ce blocage. De l’extérieur, nous ne pouvons pas dire quelle part.",[10,135,136,139,140,142,143,146],{},[25,137,138],{},"L’intégration Supabase met le préfixe au bon endroit."," Connectée via le\nVercel Marketplace, elle ajoute une douzaine de variables d’environnement, et\ndeux seulement portent ",[14,141,112],{}," : l’adresse du projet et la clé publiable,\ntoutes deux faites pour être publiques. ",[14,144,145],{},"SUPABASE_SECRET_KEY"," et le mot de passe\nde la base restent sans préfixe, sur le serveur.",[148,149],"diagram",{"alt":150,"caption":151,"src":152},"Douze lignes de réglages dans une boîte. Dix ont des valeurs masquées et restent dans la boîte. Deux portent l’étiquette NEXT_PUBLIC_ et des valeurs lisibles, et des flèches emportent ces deux-là par-dessus un mur en pointillé jusqu’à un visiteur dehors.","L’intégration Supabase ajoute douze variables. Deux atteignent chaque visiteur, et toutes deux sont faites pour : l’adresse du projet et la clé publiable.","\u002Fblog\u002Fis-v0-safe\u002Ftwo-of-twelve-1600x720.png",[154,155,157],"callout",{"type":156},"note",[10,158,159,160,62],{},"Gratuit, sans compte, environ 20 secondes : le scan sur notre page d’accueil\nlance les neuf vérifications contre votre application en ligne et écrit\n« Impossible à vérifier » plutôt qu’une coche pour tout ce à quoi il n’a pas eu\nde réponse. ",[47,161,163],{"href":162},"\u002Fsecurity-scanner","Scanner votre application",[30,165,167],{"id":166},"pourquoi-il-manque-des-en-têtes-de-sécurité-à-un-aperçu-v0","Pourquoi il manque des en-têtes de sécurité à un aperçu v0",[10,169,170],{},"Parce que c’est le domaine d’aperçu de v0 qui les fixe : chaque application qui\ns’y trouve reçoit la même réponse, et vous ne pouvez pas la changer depuis un\naperçu.",[10,172,173],{},"Les en-têtes de sécurité sont des instructions qu’un site envoie avec chaque\npage : toujours utiliser HTTPS, ne pas laisser un autre site afficher cette page\ndans la sienne, ne pas deviner de quel type de fichier il s’agit. C’est celui\nqui sert la page qui les envoie. Les aperçus que nous avons ouverts le\n3 octobre 2026 envoyaient un des cinq que cherche notre vérification, celui qui\nimpose HTTPS, et aucun des quatre autres. C’est la trouvaille sur les 1 790\napplications v0, et c’est la seule.",[10,175,176,177,180,181,185],{},"La salle d’exposition décide de ses propres portes et alarmes, et vous ne pouvez\npas les recâbler pour un seul classeur posé chez elle. Dès que vous publiez, le\nclasseur est dans votre bureau, et les en-têtes sont un réglage dans\n",[14,178,179],{},"vercel.json"," ou dans votre configuration Next.js.\n",[47,182,184],{"href":183},"\u002Fblog\u002Fmissing-security-headers","Ce que fait chaque en-tête, et les deux qui ne coûtent rien","\nfait l’objet d’un autre article.",[30,187,189],{"id":188},"un-aperçu-vusercontentnet-est-il-public","Un aperçu vusercontent.net est-il public ?",[10,191,192],{},"Traitez-le comme public. Quiconque a l’adresse peut l’ouvrir, et les adresses\ncirculent.",[10,194,195,196,201,202,205],{},"Chacun des 1 790 s’est ouvert pour nous sans connexion, et nous n’avons eu à en\ndeviner aucun : leurs adresses venaient d’une archive web publique qui avait\ndéjà enregistré une copie de chacun. Les\n",[47,197,200],{"href":198,"rel":199},"https:\u002F\u002Fv0.app\u002Fdocs\u002Fsharing",[51],"réglages de partage"," de v0 décident qui peut voir\nvotre ",[25,203,204],{},"chat"," : privé par défaut, puis votre équipe, toute personne qui a le\nlien, ou tout le monde sur le web. La documentation ne dit pas que ces réglages\ns’étendent à l’aperçu.",[10,207,208,209,211],{},"Un aperçu, c’est donc le classeur dans la salle d’exposition. Cela convient pour\nmontrer le design à quelqu’un et pas pour les vrais dossiers de qui que ce soit.\nVercel a inscrit ",[14,210,16],{}," sur la Public Suffix List en septembre 2024,\nce qui fait que les navigateurs traitent chaque aperçu comme un site à part :\nun aperçu ne peut pas poser de cookies pour tous les autres. Cela tient les\naperçus séparés les uns des autres, et ne fait rien pour garder le vôtre privé.",[10,213,214,215,217,218,223],{},"Si vous êtes ici parce que quelqu’un vous a envoyé un lien ",[14,216,16],{}," :\nle domaine appartient à Vercel, et la page qu’il héberge a été faite par la\npersonne qui l’a demandée par prompt. Le 1er juillet 2025,\n",[47,219,222],{"href":220,"rel":221},"https:\u002F\u002Fwww.okta.com\u002Fblog\u002Fthreat-intelligence\u002Fokta-observes-v0-ai-tool-used-to-build-phishing-sites\u002F",[51],"Okta a signalé","\ndes attaquants qui utilisaient v0 pour construire des copies de vraies pages de\nconnexion, et Vercel a restreint l’accès à celles qu’il a trouvées. Ne tapez pas\nde mot de passe dans un formulaire de connexion à une telle adresse si vous ne\nl’attendiez pas.",[30,225,227],{"id":226},"ce-qui-change-quand-vous-connectez-supabase-à-v0","Ce qui change quand vous connectez Supabase à v0",[10,229,230],{},"Vous commencez à remplir les tiroirs, et les vérifications revenues vides sur v0\ncommencent à avoir quelque chose à vérifier.",[10,232,233,234,239],{},"v0 ajoute Supabase en un clic et, selon les termes de\n",[47,235,238],{"href":236,"rel":237},"https:\u002F\u002Fv0.app\u002Fdocs\u002Fdatabases",[51],"sa propre documentation",", il « peut générer et\nexécuter du SQL. Cela vous permet de créer, modifier et supprimer des tables ».\nC’est ainsi que vos tables sont créées. Chaque table est un tiroir, et la Row\nLevel Security est sa serrure : un réglage par table qui décide quelles lignes\nla clé publiable de votre page peut lire. Cette clé est faite pour être\npublique, donc la serrure est la seule chose qui décide de ce qu’un inconnu\nobtient.",[10,241,242],{},"Supabase pose cette serrure par défaut sur les tables créées dans son Table\nEditor, et la laisse de côté sur les tables créées en exécutant du SQL, ce qui\nest la manière dont v0 les crée.",[148,244],{"alt":245,"caption":246,"src":247},"Deux couloirs. Dans celui du haut, une icône de grille crée trois tables, chacune avec un cadenas fermé à côté. Dans celui du bas, une icône de terminal avec le logo v0 à côté crée trois tables, chacune avec son cadenas ouvert, dessiné en rouge.","Une table créée dans le Table Editor de Supabase arrive verrouillée. Une table créée en exécutant du SQL, ce que fait v0, arrive avec le cadenas ouvert.","\u002Fblog\u002Fis-v0-safe\u002Ftwo-ways-to-make-a-table-1600x620.png",[10,249,250,251,255,256,259,260,264],{},"C’est là que sont tombées les trouvailles graves chez tous les autres builders.\nSur les 3 553 applications Lovable dont nous avons pu interroger la base, 2 017\nont rendu des lignes à une requête sans connexion, et\n",[47,252,254],{"href":253},"\u002Fblog\u002Fis-lovable-safe","les chiffres de Lovable"," montrent à quoi ressemblent les\nrésultats d’un builder une fois qu’il y a des dossiers dans les tiroirs. Une\nserrure que n’importe quelle clé ouvre n’en est pas une non plus : une politique\nqui dit ",[14,257,258],{},"using (true)"," laisse passer tout le monde pendant que le tableau de bord\naffiche la table comme protégée.\n",[47,261,263],{"href":262},"\u002Fblog\u002Fsupabase-rls-on-but-table-still-public","La RLS est activée et votre table reste publique","\nraconte toute l’histoire.",[10,266,267,268,62],{},"Si vos données sont plutôt derrière des routes auxquelles répond votre propre\ncode serveur, la même question se pose pour ces routes :\n",[47,269,271],{"href":270},"\u002Fblog\u002Fopen-api-endpoint-exposed","ce que signifie un endpoint d’API ouvert",[30,273,275],{"id":274},"ce-qui-change-quand-vous-publiez-ou-déployez-vous-même","Ce qui change quand vous publiez ou déployez vous-même",[10,277,278],{},"Le classeur quitte la salle d’exposition pour votre bureau, et les décisions que\nprenait le domaine de v0 deviennent les vôtres.",[10,280,281,282,287,288,290],{},"Publier depuis v0 crée un projet Vercel et pose trois questions, d’après\n",[47,283,286],{"href":284,"rel":285},"https:\u002F\u002Fv0.app\u002Fdocs\u002Fdeployments",[51],"la documentation de déploiement de v0"," : le\nnom du projet, qui peut accéder à l’application déployée, et le domaine, soit\nune adresse ",[14,289,56],{},", soit le vôtre. Prenez le temps sur la deuxième. Les\noptions que vous voyez dépendent de votre offre, et réserver l’application à\nvotre équipe ou la mettre derrière un mot de passe tant que vous ne l’avez pas\nvérifiée garde les inconnus dehors pendant que vous regardez.",[10,292,293],{},"Trois choses passent de votre côté quand vous publiez :",[295,296,297,303,312],"ul",{},[70,298,299,302],{},[25,300,301],{},"Les en-têtes."," Les portes et alarmes du bureau, c’est vous qui les réglez\nmaintenant.",[70,304,305,308,309,311],{},[25,306,307],{},"Les variables d’environnement."," Elles vivent dans les réglages de votre\nprojet, et c’est dans cette liste qu’une clé reçoit le préfixe ",[14,310,112],{},"\nou non.",[70,313,314,317],{},[25,315,316],{},"La vérification de votre déploiement, si vous quittez Vercel."," Vercel\ndécrit son blocage comme arrêtant des déploiements sur Vercel, donc le code\nque vous téléchargez et hébergez ailleurs part sans cette vérification.",[10,319,320,321,325],{},"Dans les deux cas, vous êtes sorti de l’échantillon que nous avons mesuré. Une\napplication v0 sur son propre domaine avec une base de données derrière\nressemble davantage aux\n",[47,322,324],{"href":323},"\u002Fblog\u002Fis-bolt-safe","applications Bolt que nous avons mesurées"," qu’à ces 1 790\naperçus.",[30,327,329],{"id":328},"comment-vérifier-votre-propre-application-v0","Comment vérifier votre propre application v0",[10,331,332],{},"Cinq choses, et les trois premières ne comptent qu’une fois que vous avez\nconnecté une base de données ou publié. Utilisez une fenêtre privée, pour que\nvotre propre connexion ne réponde pas à la place d’un inconnu.",[67,334,335,347,353,359,365],{},[70,336,337,340,341,343,344,346],{},[25,338,339],{},"Lisez vos variables d’environnement."," Dans v0, elles sont dans le menu du\nprojet, sous Settings, Environment Variables. Tout ce qui commence par\n",[14,342,112],{}," est dans le code que chaque visiteur télécharge. L’adresse\nd’un projet et une clé publiable y ont leur place. Une clé qui vous facture,\n",[14,345,145],{}," et tout ce qui contient un mot de passe, jamais. Si\nl’une d’elles a déjà porté le préfixe, faites-la d’abord tourner chez le\nfournisseur, parce que l’ancienne valeur continue de fonctionner tant que\nvous ne l’avez pas fait.",[70,348,349,352],{},[25,350,351],{},"Lisez la serrure de chaque table."," Dans Supabase, ouvrez Authentication →\nPolicies et descendez la liste. Une table avec la Row Level Security\ndésactivée est lisible par quiconque a l’adresse de votre projet, et cette\nadresse est dans votre page. Une politique qui autorise tout le monde compte\ncomme désactivée.",[70,354,355,358],{},[25,356,357],{},"Choisissez qui peut la voir au moment de publier."," Votre équipe\nseulement, ou un mot de passe, tant que les deux premiers points ne sont pas\nfaits.",[70,360,361,364],{},[25,362,363],{},"Réglez vos en-têtes une fois le domaine à vous."," Deux d’entre eux tiennent\nen une ligne chacun.",[70,366,367,370,371,62],{},[25,368,369],{},"Puis regardez depuis l’extérieur."," Notre scan lance les neuf vérifications\ncontre l’adresse publiée comme le ferait un inconnu, prend environ 20\nsecondes et ne demande aucun compte :\n",[47,372,373],{"href":162},"scannez votre application gratuitement",[10,375,376,377,62],{},"Un scan depuis l’extérieur ne voit pas le code que v0 a écrit, ni le chat dans\nlequel vous l’avez écrit, ni une table que vos pages ne mentionnent jamais. Les\nvérifications de v0 voient le code de l’intérieur et ne voient pas ce qu’un\ninconnu obtient de l’adresse. Lancez celles de v0 pendant que vous construisez,\nregardez depuis l’extérieur après la publication et, si les deux ne sont pas\nd’accord sur la lisibilité d’une table, fiez-vous à la réponse de l’extérieur,\nparce que c’est celle qu’obtient un inconnu. La version en langage simple pour\ncette plateforme est\n",[47,378,380],{"href":379},"\u002Fis-your-v0-app-safe","votre application v0 est-elle sûre ?",[30,382,384],{"id":383},"pour-que-cela-reste-vrai-après-la-publication","Pour que cela reste vrai après la publication",[10,386,387,390],{},[25,388,389],{},"Un A sur un aperçu décrit un aperçu."," Le jour où vous connectez une base de\ndonnées ou publiez sur votre propre domaine, votre note peut changer, et rien\nsur votre écran ne vous dit qu’elle a changé.",[10,392,393],{},[25,394,395,399],{},[47,396,398],{"href":397},"\u002Fpricing","Reeve Monitor"," relance les neuf vérifications pour vous :",[295,401,402,405,408,415],{},[70,403,404],{},"les neuf vérifications toutes les heures, sur trois applications au plus",[70,406,407],{},"si l’application répond, toutes les 60 secondes",[70,409,410,411,414],{},"un message quand un résultat ",[25,412,413],{},"change",", pour qu’une nouvelle table ou une nouvelle clé n’attende pas que vous regardiez",[70,416,417],{},"un rapport mensuel de ce qu’il a vu",[10,419,420],{},"Monitor coûte €12 par mois au tarif public, avec sept jours gratuits avant le\npremier prélèvement. La page des tarifs est parfois en dessous du chiffre donné\nici, jamais au-dessus.",[10,422,423],{},[25,424,425,426,430],{},"Si votre application v0 garde ses données dans Supabase,\n",[47,427,429],{"href":428},"\u002Fsupabase-backups","Reeve Care"," conserve une copie de votre base Supabase.",[295,432,433,436,439,442,445],{},[70,434,435],{},"une copie chiffrée chaque nuit, gardée là où votre projet ne peut pas l’atteindre",[70,437,438],{},"chaque copie vérifiée avant de compter, en dénombrant les lignes de chaque table",[70,440,441],{},"une restauration en un clic quand vous en avez besoin",[70,443,444],{},"vos fichiers téléversés aussi, dès que vous connectez un accès Storage",[70,446,447],{},"tout ce que fait Monitor",[10,449,450],{},"Care coûte €49 par mois au tarif public pour une application, avec les mêmes sept\njours gratuits.",[10,452,453,454,458],{},"La documentation de v0 dit qu’il peut supprimer des tables autant qu’en créer,\net aucune des neuf vérifications ci-dessus ne ramènerait les lignes de l’une\nd’elles.\n",[47,455,457],{"href":456},"\u002Fblog\u002Fai-agent-deleted-my-database","Le jour où un agent IA a supprimé une base de production","\nmontre à quoi cela ressemble de l’intérieur.",[30,460,462],{"id":461},"que-faire-cette-semaine","Que faire cette semaine",[464,465,466],"key-takeaways",{},[295,467,468,471,477,480,483],{},[70,469,470],{},"Si votre application v0 est encore un aperçu, traitez son adresse comme publique et gardez-en les données de vraies personnes à l’écart.",[70,472,473,474,476],{},"Avant de connecter une base de données, décidez où vit chaque clé : ",[14,475,112],{}," pour l’adresse du projet et la clé publiable, et rien près du navigateur pour tout le reste.",[70,478,479],{},"Après avoir connecté Supabase, lisez la politique de chaque table créée par v0, et traitez comme désactivée une politique qui autorise tout le monde.",[70,481,482],{},"Publiez pour votre équipe seulement ou derrière un mot de passe tant que ce n’est pas fait, puis vérifiez l’adresse publiée depuis l’extérieur.",[70,484,485],{},"Gardez une copie de votre base de données là où ni v0 ni votre projet ne peuvent l’atteindre, et vérifiez que la copie se restaure.",[10,487,488,489,493],{},"Commencez par les variables d’environnement, parce que ce sont elles qui\ndécident de ce que chaque visiteur télécharge. Si vous hésitez encore entre\nplusieurs builders,\n",[47,490,492],{"href":491},"\u002Fblog\u002Fsafest-ai-app-builder","quel builder d’applications IA est le plus sûr","\nmet les cinq côte à côte.",{"title":495,"searchDepth":496,"depth":496,"links":497},"",3,[498,500,501,502,503,504,505,506,507],{"id":32,"depth":499,"text":33},2,{"id":93,"depth":499,"text":94},{"id":166,"depth":499,"text":167},{"id":188,"depth":499,"text":189},{"id":226,"depth":499,"text":227},{"id":274,"depth":499,"text":275},{"id":328,"depth":499,"text":329},{"id":383,"depth":499,"text":384},{"id":461,"depth":499,"text":462},"Bases de la sécurité","\u002Fblog\u002Fis-v0-safe\u002Fcover-1200x630.png","Un classeur à tiroirs portant le logo v0, un tiroir vide ouvert, à côté d’un classeur aux tiroirs tous verrouillés.","La sécurité de v0 mesurée sur 1 790 applications en ligne : toutes ont eu A. Seules 17 citaient une base de données, et c’est surtout cela que ce A mesure.",false,"md",[515,517,520,523,526,529],{"q":33,"a":516},"Sur ce que nous avons pu mesurer, v0 est sorti plus propre que tous les autres builders scannés. Les 1 790 applications v0 en ligne ont eu A, et la seule trouvaille qu’elles partageaient était un réglage d’en-têtes de navigateur sur le domaine depuis lequel v0 sert les aperçus. Seules 17 citaient pourtant une base de données, et aucune de ces 17 n’a répondu à notre vérification de base de données, donc ce A décrit surtout des frontends sans rien derrière. Dès que vous connectez Supabase ou publiez sur votre propre domaine, les vérifications qui décident d’une note grave commencent à s’appliquer à vous.",{"q":518,"a":519},"Les applications v0 sont-elles sûres par défaut ?","Les parties que v0 contrôle sont en bon état. Sa documentation dit que le code généré passe par une analyse de sécurité avant de s’exécuter et qu’il avertit d’un usage risqué du préfixe NEXT_PUBLIC_, et en août 2025 Vercel a indiqué que v0 avait bloqué plus de 17 000 déploiements en 30 jours pour des secrets exposés. Ce qu’aucun réglage par défaut ne décide, c’est la serrure de vos tables. Supabase n’active pas la Row Level Security sur les tables créées en exécutant du SQL, et c’est ainsi que v0 les crée : lisez donc la politique de chaque table après avoir connecté une base de données.",{"q":521,"a":522},"Une URL d’aperçu vusercontent.net est-elle publique ?","Traitez-la comme publique. Chacun des 1 790 aperçus v0 que nous avons scannés s’est ouvert sans connexion, et nous avons trouvé leurs adresses dans une archive web publique. Les réglages de partage de v0 contrôlent qui peut voir votre chat, et sa documentation ne dit pas qu’ils s’appliquent à l’aperçu. Gardez les données de vraies personnes hors d’un aperçu et, au moment de publier, choisissez une visibilité réservée à l’équipe ou protégée par mot de passe jusqu’à ce que l’application soit prête pour des inconnus.",{"q":524,"a":525},"vusercontent.net est-il sûr ?","Le domaine est réel et appartient à Vercel, qui l’utilise pour héberger ce que les gens génèrent avec v0. Mais la page à une adresse donnée a été faite par la personne qui l’a demandée par prompt, et en juillet 2025 Okta a signalé des attaquants qui utilisaient v0 pour construire des copies de pages de connexion. Vercel a restreint l’accès à celles qu’il a trouvées. Si un lien que vous n’attendiez pas ouvre un formulaire de connexion à une adresse vusercontent.net, n’y tapez pas de mot de passe.",{"q":527,"a":528},"Qu’est-ce qui change quand je connecte Supabase à v0 ?","Il y a désormais des données derrière votre frontend, donc les vérifications revenues vides sur les applications v0 commencent à avoir quelque chose à vérifier. v0 peut exécuter du SQL pour créer des tables, et Supabase n’active pas la Row Level Security sur les tables créées ainsi. Votre clé publiable est faite pour être dans la page, donc la politique de chaque table est la seule chose qui décide de ce qu’un inconnu peut lire. Sur les 3 553 applications Lovable dont nous avons pu interroger la base, 2 017 ont rendu des lignes à une requête sans connexion.",{"q":530,"a":531},"Qu’est-ce qui change quand je déploie moi-même le code de v0 ?","Trois choses deviennent les vôtres. Les en-têtes de sécurité que choisissait le domaine d’aperçu de v0 deviennent un réglage dans vercel.json ou dans votre configuration Next.js. Vos variables d’environnement, et celles qui portent le préfixe NEXT_PUBLIC_, vivent dans votre propre projet. Et le code que vous téléchargez et hébergez ailleurs que chez Vercel ne passe plus par la vérification de déploiement que Vercel décrit pour v0. Regardez l’adresse publiée depuis l’extérieur dès qu’elle est en ligne.","\u002Fblog\u002Fis-v0-safe\u002Fcard-800x500.png",[534,535,536,537,538,539,540,541,542],"sécurité v0","v0 est-il sûr","sécurité v0.dev","v0 est-il sûr à utiliser","sécurité vercel v0","les applications v0 sont-elles sûres","sécurité des applications v0","sécurité du déploiement v0","vusercontent.net est-il sûr",{},true,"\u002Fblog\u002Fis-v0-safe","2026-10-03",{"title":5,"description":511},"blog\u002Fis-v0-safe",[550,551,552],"Côté sécurité, v0 est sorti plus propre que tous les autres builders que nous avons mesurés : les 1 790 applications v0 en ligne que nous avons scannées ont eu A, et la seule trouvaille qu’elles partageaient est un réglage d’en-têtes sur le domaine depuis lequel v0 les sert.","Cela dit surtout ce que sont ces applications. Seules 17 des 1 790 citaient une base de données, et aucune de ces 17 n’a donné à notre vérification de base de données une réponse qu’elle pouvait juger.","Connectez Supabase, ou publiez sur votre propre domaine, et les vérifications revenues vides commencent à avoir quelque chose à vérifier.","20IR20AgDNGlsHIqEwwsPdGy5_JVT3GU-8lVLAJkkus",[555,561,567,573,579,585,591,597,603,604,609,615,621,627,634,640,646,651,656,662,668,674,679,685,691,696,702,708,714,720,726,732,737,743,749,755,761,767,773,778,784,790,796,802,808,814,820,826,832,838,844,850,856,861,867,872,878,884,889,894,900],{"path":556,"title":557,"description":558,"published":559,"category":508,"image":560,"draft":512},"\u002Fblog\u002Fstorage-upload-violates-row-level-security","\"Row-level security policy for table objects\" à l'upload","\"New row violates row-level security policy for table objects\" signifie que votre upload n'a pas de règle insert. Rendre le bucket public n'en ajoute aucune.","2026-10-11","\u002Fblog\u002Fstorage-upload-violates-row-level-security\u002Fcard-800x500.png",{"path":562,"title":563,"description":564,"published":565,"category":508,"image":566,"draft":512},"\u002Fblog\u002Fbase44-security-scan","Scan de sécurité Base44 : ce que lui seul peut voir","Le scan de sécurité Base44 vérifie sept types de problèmes depuis l’intérieur. Voici la moitié que lui seul lit, et celle qu’il ne regarde jamais.","2026-10-10","\u002Fblog\u002Fbase44-security-scan\u002Fcard-800x500.png",{"path":568,"title":569,"description":570,"published":571,"category":508,"image":572,"draft":512},"\u002Fblog\u002Fapi-key-leaked-what-to-do","Votre clé API a fuité. L'ordre dans lequel agir","Une clé API a fuité et vous ne savez pas par quoi commencer. Toutes les clés de votre frontend n'en sont pas une, et l'ordre compte plus que la vitesse.","2026-10-09","\u002Fblog\u002Fapi-key-leaked-what-to-do\u002Fcard-800x500.png",{"path":574,"title":575,"description":576,"published":577,"category":508,"image":578,"draft":512},"\u002Fblog\u002Finfinite-recursion-in-policy-for-relation","\"Infinite recursion detected in policy\" sans désactiver RLS","\"Infinite recursion detected in policy for relation\" signifie que votre policy a interrogé la table qu'elle protège. Voici comment rompre le cercle.","2026-10-08","\u002Fblog\u002Finfinite-recursion-in-policy-for-relation\u002Fcard-800x500.png",{"path":580,"title":581,"description":582,"published":583,"category":508,"image":584,"draft":512},"\u002Fblog\u002Fno-api-key-found-in-request","\"No API key found in request\" sur Supabase, et le mauvais correctif","\"No API key found in request\" veut dire que votre requête est arrivée sans clé. La plupart des réponses pointent vers les règles de votre base.","2026-10-07","\u002Fblog\u002Fno-api-key-found-in-request\u002Fcard-800x500.png",{"path":586,"title":587,"description":588,"published":589,"category":508,"image":590,"draft":512},"\u002Fblog\u002Fis-base44-safe","Base44 est-il sûr ? Ce que 5 442 applications ont montré","Base44 est-il sûr ? Neuf vérifications sur 5 442 applications Base44 en ligne. Presque toutes ont eu un B, pour des raisons que personne n’a choisies.","2026-10-06","\u002Fblog\u002Fis-base44-safe\u002Fcard-800x500.png",{"path":592,"title":593,"description":594,"published":595,"category":508,"image":596,"draft":512},"\u002Fblog\u002Fmove-a-secret-to-an-edge-function","Cacher une clé API : la déplacer dans une Edge Function Supabase","Cacher une clé API veut dire la sortir du navigateur, et une Edge Function Supabase est le plus petit endroit où la mettre. Deux étapes comptent davantage.","2026-10-05","\u002Fblog\u002Fmove-a-secret-to-an-edge-function\u002Fcard-800x500.png",{"path":598,"title":599,"description":600,"published":601,"category":508,"image":602,"draft":512},"\u002Fblog\u002Fenv-file-exposed-on-your-server","Votre fichier .env est-il exposé ? Les douze chemins à vérifier","Votre fichier .env est-il exposé sur votre propre serveur web ? Douze adresses vous le disent, et une réponse signifie que tout son contenu est public.","2026-10-04","\u002Fblog\u002Fenv-file-exposed-on-your-server\u002Fcard-800x500.png",{"path":545,"title":5,"description":511,"published":546,"category":508,"image":532,"draft":512},{"path":323,"title":605,"description":606,"published":607,"category":508,"image":608,"draft":512},"Bolt est-il sûr ? Ce que 1 123 applications Bolt ont montré","Bolt est-il sûr ? Neuf vérifications sur 1 123 applications Bolt en ligne. L’hébergement était propre. Les trouvailles : des clés et des tables ouvertes.","2026-10-02","\u002Fblog\u002Fis-bolt-safe\u002Fcard-800x500.png",{"path":610,"title":611,"description":612,"published":613,"category":508,"image":614,"draft":512},"\u002Fblog\u002Fis-supabase-down-or-your-app","Supabase en panne, ou est-ce votre app ? Comment le savoir","Supabase est-il en panne, ou est-ce votre app ? Un projet en pause, une base pleine et un bug chez vous se ressemblent. Quatre vérifications les séparent.","2026-10-01","\u002Fblog\u002Fis-supabase-down-or-your-app\u002Fcard-800x500.png",{"path":616,"title":617,"description":618,"published":619,"category":508,"image":620,"draft":512},"\u002Fblog\u002Fdoes-supabase-encrypt-my-data","Supabase chiffre-t-il mes données ? Oui. Ce que cela arrête","Supabase chiffre-t-il les données ? Oui : AES-256 au repos, TLS en transit, SOC 2 et ISO 27001. Ce que couvre chacun, et la fuite qu'aucun n'arrête.","2026-09-30","\u002Fblog\u002Fdoes-supabase-encrypt-my-data\u002Fcard-800x500.png",{"path":622,"title":623,"description":624,"published":625,"category":508,"image":626,"draft":512},"\u002Fblog\u002Fsupabase-free-plan-limits","Limites du plan gratuit Supabase : ce qui se passe à chacune","Les limites du plan gratuit Supabase : 500 Mo de base, 5 Go d'egress, aucune sauvegarde. Ce qui se passe à chaque seuil, et ce que change Pro à $25.","2026-09-29","\u002Fblog\u002Fsupabase-free-plan-limits\u002Fcard-800x500.png",{"path":628,"title":629,"description":630,"published":631,"category":632,"image":633,"draft":512},"\u002Fblog\u002Ftest-your-supabase-backup","Testez votre sauvegarde Supabase avant d'en avoir besoin","Comment tester votre sauvegarde Supabase : la restaurer dans un projet d'exercice, compter les lignes, se connecter, chercher la ligne qui manque.","2026-09-28","Backups","\u002Fblog\u002Ftest-your-supabase-backup\u002Fcard-800x500.png",{"path":635,"title":636,"description":637,"published":638,"category":632,"image":639,"draft":512},"\u002Fblog\u002Fsupabase-backup-github-action","Sauvegarde Supabase gratuite avec une GitHub Action, et le piège","Une sauvegarde Supabase par GitHub Action est gratuite et convient à beaucoup d'apps. Le workflow, la bonne connection string et l'egress de chaque run.","2026-09-27","\u002Fblog\u002Fsupabase-backup-github-action\u002Fcard-800x500.png",{"path":641,"title":642,"description":643,"published":644,"category":632,"image":645,"draft":512},"\u002Fblog\u002Fdownload-your-supabase-backup","Pourquoi vous ne pouvez pas télécharger votre sauvegarde Supabase","Impossible de télécharger votre sauvegarde Supabase sur un projet récent : la copie quotidienne est physique. Comment le vérifier et garder la vôtre.","2026-09-26","\u002Fblog\u002Fdownload-your-supabase-backup\u002Fcard-800x500.png",{"path":647,"title":648,"description":649,"published":644,"category":508,"image":650,"draft":512},"\u002Fblog\u002Fsupabase-permission-denied-for-table","Supabase \"permission denied for table\" : le grant manquant","Dès le 30 octobre, une nouvelle table Supabase répond \"permission denied for table\" tant que l'accès n'est pas accordé. Le grant de l'e-mail est la moitié.","\u002Fblog\u002Fsupabase-permission-denied-for-table\u002Fcard-800x500.png",{"path":270,"title":652,"description":653,"published":654,"category":508,"image":655,"draft":512},"Un endpoint d'API ouvert est-il un problème de sécurité ?","Votre scan a signalé un endpoint d'API ouvert. Que cela compte dépend de ce qui est revenu, et la plupart de ceux trouvés étaient à la plateforme.","2026-09-25","\u002Fblog\u002Fopen-api-endpoint-exposed\u002Fcard-800x500.png",{"path":657,"title":658,"description":659,"published":660,"category":508,"image":661,"draft":512},"\u002Fblog\u002Flovable-security-scan","Scan de sécurité Lovable : ce qu’il ne peut pas prouver","Scan de sécurité Lovable : ce que vérifient le Quick scan et le Deep scan, quand chacun part, et la seule chose qu’un scan de l’intérieur ne prouve pas.","2026-09-24","\u002Fblog\u002Flovable-security-scan\u002Fcard-800x500.png",{"path":663,"title":664,"description":665,"published":666,"category":632,"image":667,"draft":512},"\u002Fblog\u002Fsupabase-backup-auth-users","Pourquoi votre dump Supabase ne contient aucun utilisateur","Lancez supabase db dump tout seul et vous obtenez la forme de votre base et aucune de ses lignes, sans le schéma auth où vivent vos utilisateurs.","2026-09-23","\u002Fblog\u002Fsupabase-backup-auth-users\u002Fcard-800x500.png",{"path":669,"title":670,"description":671,"published":672,"category":508,"image":673,"draft":512},"\u002Fblog\u002Fdomain-and-certificate-expiry","Domaine expiré, site hors ligne : ce qui se passe ensuite","Votre domaine a expiré et votre site est hors ligne. Le compte à rebours qui démarre, pourquoi le certificat est le moindre souci, et comment vérifier les deux.","2026-09-22","\u002Fblog\u002Fdomain-and-certificate-expiry\u002Fcard-800x500.png",{"path":253,"title":675,"description":676,"published":677,"category":508,"image":678,"draft":512},"Lovable est-il sûr ? Ce que 18 554 applications Lovable ont montré","Lovable est-il sûr ? 18 554 applications, neuf vérifications. La plateforme était la plus propre des cinq. Les trouvailles étaient dans les applications.","2026-09-21","\u002Fblog\u002Fis-lovable-safe\u002Fcard-800x500.png",{"path":680,"title":681,"description":682,"published":683,"category":508,"image":684,"draft":512},"\u002Fblog\u002Fvibe-coded-app-security-checklist","La checklist de sécurité du vibe coding, en neuf vérifications","Une checklist de sécurité du vibe coding en neuf points, chacun vérifiable de l’extérieur sur votre appli en ligne, et chacun avec un test d’une ligne.","2026-09-20","\u002Fblog\u002Fvibe-coded-app-security-checklist\u002Fcard-800x500.png",{"path":686,"title":687,"description":688,"published":689,"category":508,"image":690,"draft":512},"\u002Fblog\u002Fstripe-secret-key-in-frontend","Une clé secrète Stripe dans votre frontend peut déplacer de l’argent","Une clé secrète Stripe exposée dans votre frontend peut rembourser, débiter et lire chaque fiche client que vous détenez. Votre clé pk_live_ y a sa place.","2026-09-19","\u002Fblog\u002Fstripe-secret-key-in-frontend\u002Fcard-800x500.png",{"path":119,"title":692,"description":693,"published":694,"category":508,"image":695,"draft":512},"Variables d’environnement Vite exposées : le préfixe dit publier","Variables d’environnement Vite exposées : votre appli a fait ce que le préfixe demandait. VITE_ et NEXT_PUBLIC_ veulent dire publier, et l’IA ignorait le prix.","2026-09-18","\u002Fblog\u002Fvite-and-next-public-env-vars\u002Fcard-800x500.png",{"path":697,"title":698,"description":699,"published":700,"category":508,"image":701,"draft":512},"\u002Fblog\u002Fbase44-source-maps","Sécurité Base44 : ce qu’un scan signale, et ce qui dépend de vous","Sécurité Base44 sur 5 438 applis : trois signalements sur presque chacune sont ceux de la plateforme, la source map est le badge Base44, votre part est courte.","2026-09-17","\u002Fblog\u002Fbase44-source-maps\u002Fcard-800x500.png",{"path":703,"title":704,"description":705,"published":706,"category":508,"image":707,"draft":512},"\u002Fblog\u002Fis-cursor-ai-safe","Cursor AI est-il sûr ? L’éditeur, le code et l’appli publiée","Cursor AI est-il sûr ? Trois questions dans une recherche : ce que Cursor garde, ce que son code rate, et si l’appli que vous avez publiée est ouverte.","2026-09-16","\u002Fblog\u002Fis-cursor-ai-safe\u002Fcard-800x500.png",{"path":709,"title":710,"description":711,"published":712,"category":508,"image":713,"draft":512},"\u002Fblog\u002Fis-replit-safe","Replit est-il sûr ? Ce que 3 042 applications Replit nous ont montré","Replit est-il sûr ? 3 042 applications Replit en ligne, neuf vérifications externes. Les trouvailles étaient dans l’application publiée, pas chez l’hébergeur.","2026-09-15","\u002Fblog\u002Fis-replit-safe\u002Fcard-800x500.png",{"path":715,"title":716,"description":717,"published":718,"category":632,"image":719,"draft":512},"\u002Fblog\u002Fsupabase-storage-backup","Supabase storage backup : votre copie de base n'a aucun fichier","Un Supabase storage backup est une tâche à part. Les sauvegardes de la base gardent la liste de vos fichiers et aucun des fichiers, donc chaque upload casse.","2026-09-14","\u002Fblog\u002Fsupabase-storage-backup\u002Fcard-800x500.png",{"path":721,"title":722,"description":723,"published":724,"category":632,"image":725,"draft":512},"\u002Fblog\u002Fsupabase-point-in-time-recovery","Point-in-time recovery Supabase : prix et limites","Le point-in-time recovery de Supabase rembobine votre base à la seconde près sur la dernière semaine. $100 par mois en plus de Pro, et rien que la base.","2026-09-13","\u002Fblog\u002Fsupabase-point-in-time-recovery\u002Fcard-800x500.png",{"path":727,"title":728,"description":729,"published":730,"category":632,"image":731,"draft":512},"\u002Fblog\u002Fsupabase-project-paused-recover","Projet Supabase en pause ? Vos données sont toujours là","Supabase a mis votre projet en pause après une semaine sans activité. Rien n'est supprimé, Restaurer est à côté du nom, et vous avez un an pour cliquer.","2026-09-12","\u002Fblog\u002Fsupabase-project-paused-recover\u002Fcard-800x500.png",{"path":491,"title":733,"description":734,"published":735,"category":508,"image":736,"draft":512},"Quel builder d'app IA est le plus sûr ? 30 998 apps testées","Quel builder d'app IA est le plus sûr ? Nous avons scanné 30 998 apps actives de Lovable, Base44, Replit, v0 et Bolt. Ce n'est pas le builder qui décide.","2026-09-11","\u002Fblog\u002Fsafest-ai-app-builder\u002Fcard-800x500.png",{"path":738,"title":739,"description":740,"published":741,"category":508,"image":742,"draft":512},"\u002Fblog\u002Fenable-rls-on-every-supabase-table","Activer Row Level Security sur chaque table Supabase, et le prouver","Activer Row Level Security dans Supabase sans politique ferme la table entièrement. Une politique sans le réglage ne fait rien. Voici le SQL, et le test.","2026-09-10","\u002Fblog\u002Fenable-rls-on-every-supabase-table\u002Fcard-800x500.png",{"path":744,"title":745,"description":746,"published":747,"category":508,"image":748,"draft":512},"\u002Fblog\u002Fsupabase-rls-disabled-in-public","Supabase \"RLS disabled in public\" : ce que l'alerte rate","Supabase signale \"RLS disabled in public\" comme une erreur. Elle ne dit rien de la politique de lecture qui laisse votre table tout aussi ouverte.","2026-09-09","\u002Fblog\u002Fsupabase-rls-disabled-in-public\u002Fcard-800x500.png",{"path":750,"title":751,"description":752,"published":753,"category":508,"image":754,"draft":512},"\u002Fblog\u002Frotate-supabase-service-role-key","Faire tourner une clé service_role Supabase qui a fuité","Supabase dit de colmater la fuite d'abord. D'autres guides disent de faire tourner la clé tout de suite. Tout dépend d'où votre clé service_role a fuité.","2026-09-08","\u002Fblog\u002Frotate-supabase-service-role-key\u002Fcard-800x500.png",{"path":756,"title":757,"description":758,"published":759,"category":508,"image":760,"draft":512},"\u002Fblog\u002Fvibe-coding-security-scanners-compared","Scanners de sécurité vibe coding comparés, le nôtre compris","Le meilleur scanner de sécurité vibe coding tient à trois questions qu'aucune liste de fonctions ne traite. Dix outils comparés, avec les prix.","2026-09-07","\u002Fblog\u002Fvibe-coding-security-scanners-compared\u002Fcard-800x500.png",{"path":762,"title":763,"description":764,"published":765,"category":508,"image":766,"draft":512},"\u002Fblog\u002Fsupabase-security-checker","Supabase security checker : les cinq vérifications à faire soi-même","Un Supabase security checker lit votre app publiée plutôt que les réglages de votre projet. Voici les cinq vérifications, et comment faire chacune vous-même.","2026-09-06","\u002Fblog\u002Fsupabase-security-checker\u002Fcard-800x500.png",{"path":768,"title":769,"description":770,"published":771,"category":508,"image":772,"draft":512},"\u002Fblog\u002Fvibe-coding-security-scanner","Scanner de sécurité vibe coding : ce qu’un scan d’URL rate","Un scanner de sécurité vibe coding lit votre app en ligne depuis l’extérieur. Ce qu’il couvre, les quatre choses qu’il ne voit pas, et comment lire le résultat.","2026-09-05","\u002Fblog\u002Fvibe-coding-security-scanner\u002Fcard-800x500.png",{"path":183,"title":774,"description":775,"published":776,"category":508,"image":777,"draft":512},"En-têtes de sécurité manquants : quand cela compte","Les en-têtes de sécurité manquants sont notre constat le plus fréquent. Contre quoi ils protègent, et quand ils comptent le moins dans votre rapport.","2026-09-04","\u002Fblog\u002Fmissing-security-headers\u002Fcard-800x500.png",{"path":779,"title":780,"description":781,"published":782,"category":508,"image":783,"draft":512},"\u002Fblog\u002Fopenai-api-key-exposed-in-frontend","Votre clé API OpenAI est exposée dans votre frontend. Changez-la.","Une clé API OpenAI exposée dans votre frontend ne peut être liée à aucun domaine. Changez-la aujourd'hui, passez par votre serveur et plafonnez la dépense.","2026-09-03","\u002Fblog\u002Fopenai-api-key-exposed-in-frontend\u002Fcard-800x500.png",{"path":785,"title":786,"description":787,"published":788,"category":508,"image":789,"draft":512},"\u002Fblog\u002Fwhat-secrets-leak-from-vibe-coded-apps","Clé API exposée dans le frontend : ce que 30 998 applis livrent","Une clé API exposée dans votre frontend est le plus souvent une clé Google Maps. Nous avons scanné 30 998 applis vibe-codées et compté ce qui fuit vraiment.","2026-09-02","\u002Fblog\u002Fwhat-secrets-leak-from-vibe-coded-apps\u002Fcard-800x500.png",{"path":791,"title":792,"description":793,"published":794,"category":632,"image":795,"draft":512},"\u002Fblog\u002Fsupabase-backup-tools-compared","Outils de sauvegarde Supabase comparés, le nôtre compris","Quatre familles d'outil de sauvegarde Supabase, ce que chacun copie vraiment, et quand une GitHub Action gratuite bat le fait de payer, nous compris.","2026-09-01","\u002Fblog\u002Fsupabase-backup-tools-compared\u002Fcard-800x500.png",{"path":797,"title":798,"description":799,"published":800,"category":508,"image":801,"draft":512},"\u002Fblog\u002Freplit-secrets-explained","Utiliser les secrets sur Replit, et ce qui est publié quand même","Utiliser les secrets sur Replit : en ajouter un, le relire, corriger les deux causes du undefined. Et les clés que l'outil Secrets ne peut pas protéger.","2026-08-31","\u002Fblog\u002Freplit-secrets-explained\u002Fcard-800x500.png",{"path":803,"title":804,"description":805,"published":806,"category":632,"image":807,"draft":512},"\u002Fblog\u002Fback-up-supabase-free-tier","Sauvegardes du plan gratuit Supabase : en faire une sans terminal","Le plan gratuit de Supabase ne fait aucune sauvegarde : la copie vient de vous. Comment la faire depuis le tableau de bord, et ce que le CSV oublie.","2026-08-30","\u002Fblog\u002Fback-up-supabase-free-tier\u002Fcard-800x500.png",{"path":809,"title":810,"description":811,"published":812,"category":508,"image":813,"draft":512},"\u002Fblog\u002Fis-supabase-secure","Supabase est-il sûr ? Oui. Votre projet est une autre question","Supabase est-il sûr ? La plateforme est auditée, chiffrée et testée en intrusion. Sa documentation dit où cela s'arrête et où vos réglages commencent.","2026-08-29","\u002Fblog\u002Fis-supabase-secure\u002Fcard-800x500.png",{"path":815,"title":816,"description":817,"published":818,"category":508,"image":819,"draft":512},"\u002Fblog\u002Fwhere-to-find-supabase-api-keys","Où trouver vos clés API Supabase : anon, service_role et URL","L'URL du projet, la clé anon et la clé service_role tiennent sur une page du tableau de bord. Voici où elle est, et laquelle des quatre va dans votre app.","2026-08-28","\u002Fblog\u002Fwhere-to-find-supabase-api-keys\u002Fcard-800x500.png",{"path":821,"title":822,"description":823,"published":824,"category":508,"image":825,"draft":512},"\u002Fblog\u002Fnew-row-violates-row-level-security-policy","New row violates row-level security policy sur Supabase : et après ?","\"New row violates row-level security policy\" signifie que Supabase a refusé une écriture. Le correctif rapide rouvre la table à tout le monde.","2026-08-27","\u002Fblog\u002Fnew-row-violates-row-level-security-policy\u002Fcard-800x500.png",{"path":827,"title":828,"description":829,"published":830,"category":508,"image":831,"draft":512},"\u002Fblog\u002Fcors-wildcard-security-risk","Un joker CORS est-il un risque de sécurité ? Rarement.","Un joker CORS est-il un risque de sécurité ? C'est souvent le réglage par défaut de votre builder, et il ne livre rien que votre serveur ne donnait déjà.","2026-08-26","\u002Fblog\u002Fcors-wildcard-security-risk\u002Fcard-800x500.png",{"path":833,"title":834,"description":835,"published":836,"category":632,"image":837,"draft":512},"\u002Fblog\u002Fsupabase-branching-is-not-a-backup","Le branching Supabase n'est pas une sauvegarde de vos données.","Pourquoi le branching Supabase n'est pas une sauvegarde : une branche démarre sans vos données, et un merge ne déplace que le schéma. À quoi il sert vraiment.","2026-08-25","\u002Fblog\u002Fsupabase-branching-is-not-a-backup\u002Fcard-800x500.png",{"path":839,"title":840,"description":841,"published":842,"category":632,"image":843,"draft":512},"\u002Fblog\u002Fhow-to-restore-a-supabase-backup","Restaurer une sauvegarde Supabase, et ce qui casse après","Restaurer une sauvegarde Supabase depuis le tableau de bord ou un fichier de dump, ce que la restauration remplace et pourquoi votre app peut rester cassée.","2026-08-24","\u002Fblog\u002Fhow-to-restore-a-supabase-backup\u002Fcard-800x500.png",{"path":845,"title":846,"description":847,"published":848,"category":508,"image":849,"draft":512},"\u002Fblog\u002Fsupabase-storage-bucket-public","Votre bucket Supabase Storage est public. Est-ce un problème ?","Un bucket Supabase Storage public signifie que celui qui a l'URL d'un fichier peut l'ouvrir. Il ne signifie pas que quelqu'un peut lister ce qu'il contient.","2026-08-23","\u002Fblog\u002Fsupabase-storage-bucket-public\u002Fcard-800x500.png",{"path":851,"title":852,"description":853,"published":854,"category":508,"image":855,"draft":512},"\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend","Une clé API Google dans votre frontend, est-ce un problème ?","Une clé API Google exposée dans votre frontend est la clé que notre scanner trouve le plus souvent, et en général tout va bien. Un réglage gratuit tranche.","2026-08-22","\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend\u002Fcard-800x500.png",{"path":456,"title":857,"description":858,"published":859,"category":632,"image":860,"draft":512},"Un agent IA a supprimé mes données Supabase. Que puis-je récupérer ?","Un agent IA a supprimé des données de votre base. Ce que vous pouvez récupérer était déjà décidé avant, et les prochaines minutes décident du reste.","2026-08-21","\u002Fblog\u002Fai-agent-deleted-my-database\u002Fcard-800x500.png",{"path":862,"title":863,"description":864,"published":865,"category":508,"image":866,"draft":512},"\u002Fblog\u002Fcan-anyone-read-your-supabase-database","Qui peut lire votre base Supabase ? Nous avons testé 3 680 apps","N'importe qui peut-il lire votre base de données Supabase sans se connecter ? Nous avons scanné 30 998 apps en ligne créées avec des builders IA.","2026-08-18","\u002Fblog\u002Fcan-anyone-read-your-supabase-database\u002Fcard-800x500.png",{"path":868,"title":869,"description":870,"published":865,"category":508,"image":871,"draft":512},"\u002Fblog\u002Fsource-maps-exposed-in-production","Source maps exposées : votre app publie son code original","Une source map exposée laisse n'importe qui lire le code original de votre app, commentaires compris. Le test de 30 secondes, et ce qui compte vraiment.","\u002Fblog\u002Fsource-maps-exposed-in-production\u002Fcard-800x500.png",{"path":873,"title":874,"description":875,"published":876,"category":508,"image":877,"draft":512},"\u002Fblog\u002Fsupabase-new-api-keys","Les nouvelles clés API Supabase : laquelle va dans votre app ?","Supabase a remplacé anon et service_role par des clés publiables et secrètes. Laquelle a sa place dans votre app, et laquelle jamais ?","2026-08-12","\u002Fblog\u002Fsupabase-new-api-keys\u002Fcard-800x500.png",{"path":879,"title":880,"description":881,"published":882,"category":632,"image":883,"draft":512},"\u002Fblog\u002Fdoes-supabase-back-up-my-database","Supabase sauvegarde-t-il ma base de données ? Cela dépend du plan.","Supabase sauvegarde-t-il votre base de données ? Chaque jour sur les plans payants, jamais sur le gratuit. Comment savoir ce que vous avez vraiment.","2026-08-11","\u002Fblog\u002Fdoes-supabase-back-up-my-database\u002Fcard-800x500.png",{"path":262,"title":885,"description":886,"published":887,"category":508,"image":888,"draft":512},"Supabase Row Level Security est activé. La table reste publique.","Activer Supabase Row Level Security ne protège pas une table. Ce sont vos politiques, et celle qui a réparé votre app laisse peut-être entrer tout le monde.","2026-08-10","\u002Fblog\u002Fsupabase-rls-on-but-table-still-public\u002Fcard-800x500.png",{"path":890,"title":891,"description":892,"published":887,"category":632,"image":893,"draft":512},"\u002Fblog\u002Fversion-history-is-not-a-backup","L'historique des versions n'est pas une sauvegarde de vos données.","Lovable et Bolt tiennent un historique des versions de votre code. Votre base de données est un service à part, et revenir en arrière ne la ramène pas.","\u002Fblog\u002Fversion-history-is-not-a-backup\u002Fcard-800x500.png",{"path":895,"title":896,"description":897,"published":898,"category":632,"image":899,"draft":512},"\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database","Trois façons de sauvegarder une base Supabase, et ce qui manque","Le tableau de bord, pg_dump et un service géré. Ce que chacun enregistre, ce qu'il laisse de côté sans le dire, et lequel survit à la perte du compte.","2026-08-09","\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database\u002Fcard-800x500.png",{"path":901,"title":902,"description":903,"published":898,"category":508,"image":904,"draft":512},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","Quelles clés API sont sûres côté navigateur, et lesquelles non","Votre clé anon Supabase est faite pour être publique. Votre clé service_role non, et elle ignore toutes les règles que vous posez. Comment les distinguer.","\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend\u002Fcard-800x500.png",1791705960636]