[{"data":1,"prerenderedAt":1086},["ShallowReactive",2],{"blog-fr-is-bolt-safe":3,"blog-index-fr":736},{"id":4,"title":5,"body":6,"category":694,"cover":695,"coverAlt":696,"description":697,"draft":698,"extension":699,"faq":700,"image":715,"keywords":716,"meta":725,"navigation":726,"ogTitle":5,"path":727,"published":728,"seo":729,"stem":730,"tldr":731,"updated":728,"__hash__":735},"blog_fr\u002Fblog\u002Fis-bolt-safe.md","Bolt est-il sûr ? Ce que 1 123 applications Bolt ont montré",{"type":7,"value":8,"toc":678},"minimark",[9,18,26,29,34,37,40,62,65,69,82,218,221,227,243,247,250,260,271,283,286,297,301,304,307,367,374,382,389,394,398,401,404,426,434,438,441,444,449,459,463,466,469,485,492,496,499,506,513,516,520,523,561,565,571,580,599,602,613,630,633,641,645,667],[10,11,12,13,17],"p",{},"Vous avez construit quelque chose sur Bolt, appuyé sur Publish, et l’application\nvit maintenant à une adresse qui se termine par ",[14,15,16],"code",{},"bolt.host",". Avant d’envoyer ce\nlien à de vrais clients, vous avez tapé « bolt est-il sûr » dans un champ de\nrecherche, et ce qui est revenu était une liste de cinq vulnérabilités présentes,\ndisait-on, dans presque toutes les applications Bolt, avec un scanner à vendre en\nbas de page.",[10,19,20,21,25],{},"Voici où ces listes se trompent : ",[22,23,24],"strong",{},"elles mettent tous les risques au\nmême niveau, et sur les applications Bolt en ligne la plupart apparaissent à\npeine."," Source maps, en-têtes cross-origin ouverts et routes d’API non protégées\ny figurent à égalité avec les clés qui fuient et les tables ouvertes. Dans nos\ndonnées, les trois premiers sont apparus sur 13, 1 et 4 applications sur plus de\nmille. Les deux autres sont là où se trouvaient les trouvailles.",[10,27,28],{},"Entre le 12 et le 14 août 2026, nous avons passé les mêmes neuf vérifications\nexternes, que n’importe qui peut lancer gratuitement depuis notre page d’accueil,\nsur 30 998 applications en ligne, et 1 123 d’entre elles étaient publiées sur\nl’hébergement de Bolt. Voici ce qui est revenu pour celles-là, et où s’arrête\nnotre regard.",[30,31,33],"h2",{"id":32},"bolt-est-il-sûr","Bolt est-il sûr ?",[10,35,36],{},"Pour tout ce que Bolt décide lui-même, oui. Son hébergement est ressorti aussi\npropre que celui de Lovable, et tout ce qui a fait baisser une note se trouvait\ndans une application construite par son propriétaire.",[10,38,39],{},"Imaginez une application Bolt comme une boutique. Bolt construit le bâtiment :\nl’adresse, le certificat, l’hébergement. Vous remplissez la vitrine, c’est-à-dire\nchaque page, chaque image et chaque script que votre application remet à un\nvisiteur, et quiconque passe devant peut lire ce qu’il y a dedans. Derrière la\nboutique se trouve la réserve, votre base de données, avec sa propre porte et sa\npropre serrure. « Bolt est-il sûr » recouvre en fait trois questions, une pour\nchacun.",[41,42,43,50,56],"ol",{},[44,45,46,49],"li",{},[22,47,48],{},"Le bâtiment."," Bolt publie-t-il correctement votre application : un\ncertificat valide, un domaine qui n’expirera pas, rien d’égaré à une adresse\npublique. C’est le travail de Bolt.",[44,51,52,55],{},[22,53,54],{},"La vitrine."," Ce que le navigateur d’un visiteur télécharge. Une clé laissée\ndedans peut être lue par quiconque regarde, peu importe comment elle y est\narrivée.",[44,57,58,61],{},[22,59,60],{},"La réserve."," Votre base de données répond-elle à un inconnu qui fait le\ntour par l’arrière et demande ? Cela dépend d’une serrure que vous posez,\ntable par table.",[10,63,64],{},"Nos vérifications lisent les trois depuis l’extérieur. Aucune ne lit le code\nqu’a écrit l’agent de Bolt comme vous le liriez dans l’éditeur, et cet article\nne devine pas à sa place.",[30,66,68],{"id":67},"ce-que-nous-avons-trouvé-dans-1-123-applications-bolt","Ce que nous avons trouvé dans 1 123 applications Bolt",[10,70,71,72,75,76,81],{},"Neuf vérifications, lancées depuis l’extérieur, sans connexion et sans accès au\ncompte de qui que ce soit. Quand une base de données répondait, nous lui avons\ndemandé combien de lignes elle remettrait et nous nous sommes arrêtés là ; nous\nn’en avons lu aucune. Aucune application n’est nommée ici ni ailleurs dans ce\nque nous publions. Chaque proportion ci-dessous porte sur les applications où la\nvérification a ",[22,73,74],{},"répondu",", car une vérification qui n’a pas pu aboutir est\ninconnue, pas réussie, et c’est pour cela que les dénominateurs bougent. La\nméthode et les données sont ",[77,78,80],"a",{"href":79},"\u002Fresearch\u002Fvibe-coded-app-security-2026","dans le rapport",".",[83,84,85,102],"table",{},[86,87,88],"thead",{},[89,90,91,95,99],"tr",{},[92,93,94],"th",{},"Ce que nous avons vérifié",[92,96,98],{"align":97},"right","Applications Bolt",[92,100,101],{},"Qui en décide",[103,104,105,117,128,138,149,159,169,179,197,208],"tbody",{},[89,106,107,111,114],{},[108,109,110],"td",{},"En-têtes de sécurité du navigateur manquants",[108,112,113],{"align":97},"1 121 sur 1 123",[108,115,116],{},"L’hébergement Bolt",[89,118,119,122,125],{},[108,120,121],{},"Quelque chose qui ressemble à une clé dans le code téléchargé",[108,123,124],{"align":97},"75 sur 1 123 (7 %)",[108,126,127],{},"Votre application",[89,129,130,133,136],{},[108,131,132],{},"Une table lisible sans connexion",[108,134,135],{"align":97},"27 sur 35",[108,137,127],{},[89,139,140,143,146],{},[108,141,142],{},"Code source d’origine publié (source maps)",[108,144,145],{"align":97},"13 sur 1 123 (1 %)",[108,147,148],{},"Un réglage de build",[89,150,151,154,157],{},[108,152,153],{},"Un bucket de stockage qui liste ses fichiers",[108,155,156],{"align":97},"6 sur 901",[108,158,127],{},[89,160,161,164,167],{},[108,162,163],{},"Une route d’API qui a remis des données à un inconnu",[108,165,166],{"align":97},"4 sur 1 120",[108,168,127],{},[89,170,171,174,177],{},[108,172,173],{},"N’importe quel site autorisé à appeler votre API",[108,175,176],{"align":97},"1 sur 1 120",[108,178,127],{},[89,180,181,192,195],{},[108,182,183,184,187,188,191],{},"Un fichier privé comme ",[14,185,186],{},".env"," ou ",[14,189,190],{},".git\u002Fconfig"," à une URL publique",[108,193,194],{"align":97},"0 sur 1 109",[108,196,127],{},[89,198,199,202,205],{},[108,200,201],{},"Certificat expiré ou non reconnu",[108,203,204],{"align":97},"0 sur 1 119",[108,206,207],{},"Bolt",[89,209,210,213,216],{},[108,211,212],{},"Domaine sur le point d’expirer",[108,214,215],{"align":97},"0 sur 1 123",[108,217,207],{},[10,219,220],{},"Les notes : 1 051 A, 33 B, 24 C, 15 D et aucun F.",[222,223],"diagram",{"alt":224,"caption":225,"src":226},"Sept barres horizontales sur une même échelle, chacune précédée d’un petit pictogramme et suivie d’un nombre : 1 121 pour les en-têtes, 75 pour les clés, 27 pour les tables lisibles, 13 pour les source maps, 6 pour les buckets, 4 pour les routes ouvertes et 1 pour l’en-tête cross-origin ouvert. La barre du haut est longue et gris pâle, les autres sont courtes et turquoise, et les trois dernières sont des traits fins entourés d’un cercle.","Des nombres d’applications sur une seule échelle. La barre grise dépend de l’hébergement Bolt. Chaque barre turquoise vient de quelque chose dans l’application, et la ligne des tables lisibles se mesure sur une base bien plus petite, qu’une image plus bas décortique.","\u002Fblog\u002Fis-bolt-safe\u002Fwhat-we-found-1600x720.png",[10,228,229,230,233,234,238,239,242],{},"Cette première ligne dépend de ce qui sert vos pages, et sur\n",[14,231,232],{},"yourapp.bolt.host"," c’est Bolt, donc 1 121 applications ont reçu la même\nréponse. Les en-têtes ",[77,235,237],{"href":236},"\u002Fblog\u002Fmissing-security-headers","valent la peine",", et ce\nn’est pas avec eux qu’on fait un D. Retirez cette ligne et ",[22,240,241],{},"1 008 des 1 123\napplications Bolt n’avaient rien d’autre du tout",". Les 115 restantes font le\nsujet de la suite de cet article.",[30,244,246],{"id":245},"ce-que-bolt-fait-bien","Ce que Bolt fait bien",[10,248,249],{},"Les vérifications qui dépendent de Bolt sont revenues presque vides, et sur le\nseul réglage de build que nous mesurons, Bolt fait jeu égal avec Lovable.",[10,251,252,255,256,81],{},[22,253,254],{},"Source maps."," 13 applications Bolt sur 1 123 publient les fichiers d’origine\nderrière l’application, commentaires compris. C’est un peu plus d’une sur cent, à\npeu près le même taux que les 225 sur 18 553 de Lovable, et\n",[77,257,259],{"href":258},"\u002Fblog\u002Fsource-maps-exposed-in-production","une map en dit plus qu’on ne le croit",[10,261,262,265,266,270],{},[22,263,264],{},"En-têtes cross-origin."," Une application sur 1 120 annonçait à tous les sites du\nmonde qu’ils pouvaient appeler son API. C’est la trouvaille\n",[77,267,269],{"href":268},"\u002Fblog\u002Fcors-wildcard-security-risk","la plus susceptible de laisser un autre site agir à la place de votre utilisateur",",\net chez Bolt elle est apparue une fois.",[10,272,273,276,277,279,280,282],{},[22,274,275],{},"Le bâtiment lui-même."," Le certificat était valide sur les 1 119 applications\noù nous avons pu en lire un, aucun domaine sur 1 123 n’était près d’expirer, et\naucune application ne servait un fichier ",[14,278,186],{}," ou un ",[14,281,190],{}," à une adresse\nordinaire.",[10,284,285],{},"Rien de tout cela ne vous demandait quoi que ce soit, et sur certains autres\nbuilders, si.",[287,288,290],"callout",{"type":289},"note",[10,291,292,293,81],{},"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. ",[77,294,296],{"href":295},"\u002Fsecurity-scanner","Scanner votre application",[30,298,300],{"id":299},"de-quoi-étaient-faites-les-75-clés","De quoi étaient faites les 75 clés",[10,302,303],{},"La plupart étaient sans problème, et les rares qui ne l’étaient pas sont ce qui\ncoûte le plus cher dans cet article.",[10,305,306],{},"75 des 1 123 applications Bolt avaient quelque chose qui ressemble à une clé dans\nle code qu’un visiteur télécharge. Comptées comme des formes, cela fait 7 % des\napplications Bolt qui « laissent fuiter des secrets ». Comptées selon ce que\nchaque clé peut faire, elles se répartissent ainsi, chaque application étant\ncomptée une fois, sous ce qu’elle contient de plus grave :",[83,308,309,322],{},[86,310,311],{},[89,312,313,316,319],{},[92,314,315],{},"Ce que nous avons trouvé dans le bundle",[92,317,318],{"align":97},"Applications",[92,320,321],{},"Ce que cela veut dire",[103,323,324,335,346,357],{},[89,325,326,329,332],{},[108,327,328],{},"Une clé d’API Google, et rien d’autre",[108,330,331],{"align":97},"38",[108,333,334],{},"En général correct, une fois limitée à votre domaine",[89,336,337,340,343],{},[108,338,339],{},"Un secret que nous n’avons pas pu attribuer",[108,341,342],{"align":97},"26",[108,344,345],{},"Nous n’avons pas pu dire à quel fournisseur il appartient",[89,347,348,351,354],{},[108,349,350],{},"Une clé OpenAI",[108,352,353],{"align":97},"10",[108,355,356],{},"Facture votre compte, directement",[89,358,359,362,365],{},[108,360,361],{},"Une clé Anthropic",[108,363,364],{"align":97},"1",[108,366,356],{},[10,368,369,370,81],{},"Les 38 clés Google sont la raison pour laquelle nous classons chaque clé au lieu\nde simplement repérer un motif. Une clé Google Maps dans un navigateur est là où\nelle doit être, et la correction consiste à\n",[77,371,373],{"href":372},"\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend","la limiter à votre propre domaine",[10,375,376,377,381],{},"Les dix clés OpenAI sont le cas inverse. Une clé OpenAI est un jeton porteur\n(bearer token) : celui qui la détient peut la dépenser, depuis n’importe où, et\nOpenAI ne propose aucun réglage qui lie une clé à votre site. Ces dix\napplications ont toutes reçu un D, parce qu’une seule trouvaille critique\nplafonne la note, quoi que l’application ait bien fait par ailleurs.\n",[77,378,380],{"href":379},"\u002Fblog\u002Fopenai-api-key-exposed-in-frontend","Que faire quand vous en trouvez une, dans l’ordre","\ncommence par la renouveler aujourd’hui.",[10,383,384,385,388],{},"Voici le chiffre qui fait de cette trouvaille celle de Bolt. Les applications Bolt\nreprésentaient moins de 4 applications scannées sur 100, et elles portaient\n",[22,386,387],{},"10 des 33 clés OpenAI"," que nous avons trouvées, toutes plateformes\nconfondues. Rapporté à chaque application, cela fait environ une application Bolt\nsur 110, contre 18 des 18 554 applications Lovable, environ une sur mille. Dix\napplications, c’est un petit échantillon, et quelques-unes de plus ou de moins\nferaient beaucoup bouger ce rapport. Bolt resterait malgré tout devant tous les\nautres builders que nous avons mesurés.",[222,390],{"alt":391,"caption":392,"src":393},"Deux barres de même longueur, l’une au-dessus de l’autre, chacune précédée d’un pictogramme. La barre du haut représente 30 998 applications scannées et porte à son extrémité gauche une fine tranche turquoise marquée 1 123, avec le logo Bolt à côté. La barre du bas représente 33 clés OpenAI et porte une tranche rouge de près d’un tiers de sa longueur, marquée 10.","Bolt était une fine tranche des applications scannées et près d’un tiers des clés OpenAI trouvées. Les nombres sont petits, c’est pourquoi les deux sont affichés au lieu d’être transformés en taux.","\u002Fblog\u002Fis-bolt-safe\u002Fshare-of-openai-keys-1600x620.png",[30,395,397],{"id":396},"pourquoi-les-applications-bolt-laissent-elles-fuiter-des-clés-dapi","Pourquoi les applications Bolt laissent-elles fuiter des clés d’API ?",[10,399,400],{},"De l’extérieur, nous ne voyons pas comment l’une de ces dix clés est arrivée là,\net les propres instructions de Bolt disent qu’aucune n’aurait dû y être.",[10,402,403],{},"La documentation de Bolt décrit le chemin prévu. Demandez à l’agent d’intégrer\nOpenAI et, selon les termes de la documentation, il va « terminer le code puis\nafficher un message vous demandant d’ajouter votre secret ». Ce secret va dans\nle panneau Secrets, où seule une fonction serveur peut le lire. Une fonction\nserveur tourne du côté de Bolt, donc le navigateur du visiteur ne reçoit jamais\nla clé. Construite ainsi, la clé reste dans la réserve.",[10,405,406,407,410,411,414,415,418,419,421,422,425],{},"Le détour que nous pouvons nommer, c’est la variable d’environnement.\nL’introduction de Bolt aux bases de données dit que les variables\nd’environnement gardent ces valeurs privées, et deux des trois noms qu’elle\ncite, ",[14,408,409],{},"VITE_SUPABASE_URL"," et ",[14,412,413],{},"VITE_SUPABASE_ANON_KEY",", commencent par ",[14,416,417],{},"VITE_",". Ce\npréfixe appartient à Vite, l’outil de build, et la documentation de Vite dit\nl’inverse à son sujet : une variable ",[14,420,417],{}," est écrite dans le code que le\nnavigateur télécharge, et elle ne doit jamais contenir de clé d’API. Pour ces\ndeux noms, c’est sans conséquence, car l’adresse d’un projet et une clé publiable\nsont faites pour être publiques. Reprenez le même schéma pour\n",[14,423,424],{},"VITE_OPENAI_API_KEY"," et la clé se retrouve dans la vitrine.",[10,427,428,429,433],{},"Une clé collée dans le chat pendant que vous répariez autre chose peut aussi\nfinir écrite directement dans une page. Dans les deux cas, le résultat est le\nmême fichier.\n",[77,430,432],{"href":431},"\u002Fblog\u002Fvite-and-next-public-env-vars","Comment fonctionne le préfixe"," explique\nquelles valeurs ont leur place derrière et lesquelles jamais.",[30,435,437],{"id":436},"_27-sur-35-les-bases-bolt-que-nous-avons-pu-interroger","27 sur 35 : les bases Bolt que nous avons pu interroger",[10,439,440],{},"Parmi les bases de données Bolt qui nous ont donné une réponse exploitable, 27\nsur 35 ont remis des lignes à une requête sans aucune connexion. C’est un\ndécompte, et la base est trop petite pour l’imprimer en pourcentage.",[10,442,443],{},"Les dénominateurs comptent ici plus que partout ailleurs dans cet article. 266\ndes 1 123 applications Bolt nommaient un projet Supabase dans le code qu’elles\nlivrent. Seules 35 d’entre elles ont répondu assez bien pour que nous puissions\njuger. Les 231 autres n’ont pas pu être jugées, ce qui les rend inconnues, et\nnous ne les avons comptées ni comme propres ni comme exposées.",[222,445],{"alt":446,"caption":447,"src":448},"Quatre barres empilées qui rétrécissent de gauche à droite sur une même échelle : 1 123 applications Bolt, 266 qui nommaient un projet Supabase, 35 dont la base a donné une réponse exploitable, et 27 qui ont rendu des lignes sans connexion. La troisième barre se prolonge en pointillés jusqu’à la largeur de la deuxième, marquée d’un point d’interrogation et du nombre 231. La dernière barre est rouge.","Quatre dénominateurs. Le 27 se mesure sur le 35, et les 231 que nous n’avons pas pu juger sont dessinées comme inconnues au lieu d’être omises.","\u002Fblog\u002Fis-bolt-safe\u002Fwhere-it-lands-1600x620.png",[10,450,451,452,187,455,458],{},"Dans 4 des 27, la table qui a répondu portait le genre de nom qu’on donne aux\ntables qui parlent de personnes, comme ",[14,453,454],{},"users",[14,456,457],{},"profiles",". Ces quatre-là et\nles onze applications avec une clé OpenAI ou Anthropic font à elles seules les\n15 notes D. Dans les 23 autres, c’était une table que nous ne pouvions pas\nidentifier de l’extérieur, peut-être une liste de produits faite pour être\npublique, peut-être tout autre chose.",[30,460,462],{"id":461},"pourquoi-tout-se-joue-dans-la-base-de-données","Pourquoi tout se joue dans la base de données",[10,464,465],{},"Parce que l’adresse de la réserve est affichée dans la vitrine, et qu’elle doit\nl’être.",[10,467,468],{},"Quand une application Bolt lit ses données depuis la page, la page a besoin de\nl’adresse de la base et d’une clé publiable, donc les deux voyagent jusqu’à\nchaque visiteur. Que cette clé soit publique est normal ; c’est par là que votre\npropre application entre. Ce qu’elle obtient en retour dépend d’un réglage par\ntable appelé Row Level Security. Activé, avec une policy écrite, la clé publique\nne lit que les lignes que la policy autorise. Désactivé, elle lit la table.",[10,470,471,472,475,476,479,480,484],{},"Supabase active la Row Level Security par défaut pour les tables que vous créez\nà la souris dans son Table Editor. Les tables créées en ",[22,473,474],{},"exécutant du SQL"," ne\nl’ont pas, et exécuter du SQL est justement la façon dont un builder crée des\ntables pour vous. L’activer n’est d’ailleurs que la première étape, car la\npolicy qu’un assistant écrit pour faire disparaître une erreur de permissions est\nsouvent ",[14,477,478],{},"using (true)",", qui autorise tout le monde pendant que le tableau de bord\naffiche la table comme protégée.\n",[77,481,483],{"href":482},"\u002Fblog\u002Fsupabase-rls-on-but-table-still-public","La RLS est activée et votre table est toujours publique","\nraconte toute cette histoire.",[10,486,487,488,81],{},"La propre vérification de base de données de Bolt cherche exactement cela : sa\ndocumentation la décrit comme trouvant « une policy de Row Level Security (RLS)\nmanquante ou une permission trop ouverte ». Le guide en langage simple pour\ncette plateforme est ",[77,489,491],{"href":490},"\u002Fis-your-bolt-app-safe","votre application Bolt est-elle sûre",[30,493,495],{"id":494},"ce-que-vérifie-laudit-de-sécurité-de-bolt","Ce que vérifie l’audit de sécurité de Bolt",[10,497,498],{},"Il lit votre projet de l’intérieur, et il tourne quand vous appuyez sur le\nbouton.",[10,500,501,502,505],{},"Bolt a annoncé l’audit le 30 juillet 2026. Sur une offre payante, il se trouve\ndans le menu Publish sous le nom ",[22,503,504],{},"Run security audit"," : il passe en revue\nvotre code et votre base de données, corrige lui-même la plupart des problèmes,\nsignale le reste et ne consomme pas vos tokens. Sur toutes les offres, y compris\nla gratuite, les réglages d’une base de données Bolt ont une section Security qui\nlance la vérification de Row Level Security décrite plus haut.",[10,507,508,509,512],{},"Notre scan a eu lieu deux semaines après l’apparition de ce bouton, donc les\nchiffres ci-dessus ne peuvent pas dire combien il a changé les choses depuis. Ce\nque nous pouvons dire, c’est comment les deux points de vue s’emboîtent. L’audit\nvoit votre projet de l’intérieur, y compris des tables que vos pages ne\nmentionnent jamais, ce qu’un scan depuis l’extérieur ne peut jamais faire. Un\nscan depuis l’extérieur voit ce qu’un inconnu obtient de l’application publiée.\nQuand un audit se termine, le bouton affiche ",[22,510,511],{},"Security audit up to date",", et la\nprochaine modification que vous publiez est une modification qu’il n’a pas vue.",[10,514,515],{},"Lancez l’audit avant de publier et regardez depuis l’extérieur ensuite. Si les\ndeux ne sont pas d’accord sur le fait qu’une table soit lisible, fiez-vous à la\nréponse de l’extérieur, parce que c’est celle qu’obtient un inconnu.",[30,517,519],{"id":518},"comment-vérifier-votre-propre-application-bolt","Comment vérifier votre propre application Bolt",[10,521,522],{},"Cinq choses à regarder. Utilisez une fenêtre privée, pour que votre propre\nconnexion ne réponde pas à la place d’un inconnu.",[41,524,525,531,537,546,552],{},[44,526,527,530],{},[22,528,529],{},"Sachez quelle base de données vous avez."," Les nouveaux projets Bolt\nutilisent une base Bolt par défaut. Si vous avez choisi Supabase à la\ncréation du projet, ou en avez connecté un plus tard, vos tables vivent dans\nun projet Supabase auquel vous pouvez vous connecter.",[44,532,533,536],{},[22,534,535],{},"Lisez la serrure de chaque table."," Avec une base Bolt, ouvrez la section\nSecurity des réglages de la base et lancez la vérification. Avec Supabase,\nouvrez Authentication → Policies et lisez la liste : une table dont la Row\nLevel Security est désactivée est lisible par quiconque a l’adresse de votre\nprojet, et cette adresse est dans votre application. Une policy qui autorise\ntout le monde compte comme désactivée.",[44,538,539,545],{},[22,540,541,542,544],{},"Cherchez ",[14,543,417],{}," dans votre projet."," Chaque valeur derrière ce préfixe est\ndans la vitrine. L’adresse d’un projet et une clé publiable y ont leur place.\nUne clé qui vous facture a sa place dans le panneau Secrets, lue par une\nfonction serveur. Si l’une d’elles s’est déjà trouvée derrière le préfixe,\nrenouvelez-la d’abord chez le fournisseur, car l’ancienne valeur continue de\nmarcher tant que vous ne l’avez pas fait.",[44,547,548,551],{},[22,549,550],{},"Regardez votre stockage."," Un bucket marqué public liste chacun de ses\nfichiers à quiconque le demande, y compris ceux que votre application n’affiche\njamais.",[44,553,554,557,558,81],{},[22,555,556],{},"Ou laissez le scan s’en charger."," Il fait cela depuis l’extérieur, plus\ncinq autres vérifications, prend environ 20 secondes, ne demande pas de\ncompte, et vous montre une note et ce qui l’a produite :\n",[77,559,560],{"href":295},"scannez votre application gratuitement",[30,562,564],{"id":563},"pour-que-cela-reste-vrai-après-la-publication","Pour que cela reste vrai après la publication",[10,566,567,570],{},[22,568,569],{},"Une vérification du mois dernier décrit l’application du mois dernier."," Sur\nBolt, publier tient en un bouton, donc une table ajoutée ce matin ou une clé\ncollée à minuit est en ligne dès que vous appuyez.",[10,572,573],{},[22,574,575,579],{},[77,576,578],{"href":577},"\u002Fpricing","Reeve Monitor"," relance les neuf vérifications pour vous :",[581,582,583,586,589,596],"ul",{},[44,584,585],{},"les neuf vérifications toutes les heures, sur trois applications au plus",[44,587,588],{},"si l’application répond, toutes les 60 secondes",[44,590,591,592,595],{},"un message quand un résultat ",[22,593,594],{},"change",", pour qu’une nouvelle trouvaille n’attende pas que vous regardiez",[44,597,598],{},"un rapport mensuel de ce qu’il a vu",[10,600,601],{},"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,603,604,612],{},[22,605,606,607,611],{},"Si votre application Bolt garde ses données dans votre propre projet Supabase,\n",[77,608,610],{"href":609},"\u002Fsupabase-backups","Reeve Care"," en conserve une copie."," Cela vaut pour un projet\nconnecté dès le départ comme pour une base Bolt que vous avez récupérée dans\nSupabase.",[581,614,615,618,621,624,627],{},[44,616,617],{},"une copie chiffrée de votre base Supabase chaque nuit, gardée là où votre projet ne peut pas l’atteindre",[44,619,620],{},"chaque copie vérifiée avant de compter, en dénombrant les lignes de chaque table",[44,622,623],{},"une restauration en un clic quand vous en avez besoin",[44,625,626],{},"vos fichiers téléversés aussi, dès que vous connectez un accès Storage",[44,628,629],{},"tout ce que fait Monitor",[10,631,632],{},"Care coûte €49 par mois au tarif public pour une application, avec les mêmes sept\njours gratuits.",[10,634,635,636,640],{},"Une table ouverte, c’est quelque chose qu’un inconnu peut lire. Une migration\npartie dans le mauvais sens, ou un agent ayant accès à la base, c’est quelque\nchose qui peut la vider, et aucune des neuf vérifications de cet article ne\nramènerait les lignes.\n",[77,637,639],{"href":638},"\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,642,644],{"id":643},"que-faire-cette-semaine","Que faire cette semaine",[646,647,648],"key-takeaways",{},[581,649,650,655,658,661,664],{},[44,651,541,652,654],{},[14,653,417],{}," dans votre projet Bolt et lisez chaque valeur derrière. Une clé qui vous facture a sa place dans le panneau Secrets, lue par une fonction serveur.",[44,656,657],{},"Si une clé OpenAI ou toute autre clé payante a déjà figuré dans cette liste, renouvelez-la chez le fournisseur avant de la retirer du code.",[44,659,660],{},"Lancez la vérification de sécurité de la base, ou ouvrez Authentication → Policies dans Supabase, et lisez la serrure de chaque table. Une policy qui autorise tout le monde laisse la table ouverte.",[44,662,663],{},"Lancez l’audit de Bolt avant de publier, puis vérifiez l’application publiée depuis l’extérieur.",[44,665,666],{},"Gardez une copie de votre base là où votre projet et votre agent ne peuvent pas aller, et vérifiez que cette copie se restaure.",[10,668,669,670,672,673,677],{},"Commencez par la recherche de ",[14,671,417],{},", car c’est la seule trouvaille sur Bolt\nqui coûte de l’argent à elle seule. Si vous hésitez encore entre plusieurs\nbuilders, ",[77,674,676],{"href":675},"\u002Fblog\u002Fsafest-ai-app-builder","quel builder d’applications IA est le plus sûr","\nmet les cinq côte à côte.",{"title":679,"searchDepth":680,"depth":680,"links":681},"",3,[682,684,685,686,687,688,689,690,691,692,693],{"id":32,"depth":683,"text":33},2,{"id":67,"depth":683,"text":68},{"id":245,"depth":683,"text":246},{"id":299,"depth":683,"text":300},{"id":396,"depth":683,"text":397},{"id":436,"depth":683,"text":437},{"id":461,"depth":683,"text":462},{"id":494,"depth":683,"text":495},{"id":518,"depth":683,"text":519},{"id":563,"depth":683,"text":564},{"id":643,"depth":683,"text":644},"Bases de la sécurité","\u002Fblog\u002Fis-bolt-safe\u002Fcover-1200x630.png","Une application en vitrine, le logo Bolt pour enseigne, une clé rouge dedans, une base verrouillée derrière et un passant dehors.","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.",false,"md",[701,704,707,709,712],{"q":702,"a":703},"Bolt est-il sûr à utiliser ?","Pour la partie que Bolt contrôle, nos chiffres disent oui. Sur 1 123 applications en ligne sur bolt.host, nous n’avons trouvé aucun mauvais certificat, aucun domaine près d’expirer, 13 applications qui publient leurs source maps et une qui laissait n’importe quel site appeler son API. Ce qui décide de votre propre application est à l’intérieur : si une clé qui vous facture a fini dans le code que les visiteurs téléchargent, et si vos tables répondent à un inconnu. Ce sont deux réglages que vous pouvez vérifier vous-même.",{"q":705,"a":706},"Les applications Bolt sont-elles sûres par défaut ?","Ce que Bolt publie pour vous est ressorti propre de notre scan. Le reste dépend de ce qui s’est passé dans le chat. Bolt est censé garder une clé d’API payante dans son panneau Secrets, derrière une fonction serveur, et il a une vérification de base de données qui cherche une Row Level Security manquante. Aucune ne tourne toute seule : l’audit du projet est un bouton du menu Publish sur les offres payantes, et la vérification de base de données est une section que vous ouvrez. En août 2026, 75 applications Bolt sur 1 123 avaient quelque chose qui ressemble à une clé dans leur front-end, et 27 des 35 bases que nous avons pu interroger ont répondu à un inconnu.",{"q":397,"a":708},"De l’extérieur, nous ne voyons pas comment une clé donnée est arrivée là. La voie que nous pouvons nommer est la variable d’environnement. Une variable dont le nom commence par VITE_ est écrite dans le JavaScript que chaque visiteur télécharge, et Vite, l’outil de build derrière ce préfixe, dit que ces variables ne doivent jamais contenir de clé d’API. Pour l’adresse d’un projet ou une clé publiable, c’est sans conséquence. Pour une clé OpenAI, c’est une facture. Dix des 1 123 applications Bolt scannées en livraient une.",{"q":710,"a":711},"Mes données Supabase sont-elles en sécurité dans une application Bolt ?","Cela tient à un réglage par table. Quand une application Bolt parle à Supabase depuis la page, elle utilise une clé publiable faite pour être publique, donc seule la Row Level Security décide de ce qu’un inconnu reçoit. Nous avons pu demander des lignes à 35 bases Bolt sans nous connecter, et 27 les ont données. C’est un décompte, et la base est trop petite pour en faire un pourcentage. Vous pouvez lire vos propres policies en quelques minutes.",{"q":713,"a":714},"Bolt est-il plus sûr que Lovable ?","Côté plateforme, ils sont à égalité : 13 applications Bolt sur 1 123 et 225 applications Lovable sur 18 553 publiaient des source maps, un peu plus d’une sur cent dans les deux cas, et aucune n’avait de problème de certificat ou de domaine. La différence, ce sont les clés. Dix des 1 123 applications Bolt portaient une clé OpenAI, contre 18 sur 18 554 chez Lovable. Dix, c’est peu, alors lisez-le comme une tendance. La comparaison complète des cinq builders se trouve dans un article à part.","\u002Fblog\u002Fis-bolt-safe\u002Fcard-800x500.png",[717,718,719,720,721,722,723,724],"bolt est-il sûr","sécurité bolt.new","bolt.new est-il sûr","sécurité des applications bolt","les applications bolt sont-elles sûres","sécurité bolt supabase","problèmes de sécurité bolt","sécurité du déploiement bolt",{},true,"\u002Fblog\u002Fis-bolt-safe","2026-10-02",{"title":5,"description":697},"blog\u002Fis-bolt-safe",[732,733,734],"Bolt est-il sûr ? Pour tout ce que Bolt décide lui-même, oui. Sur 1 123 applications Bolt en ligne, nous en avons trouvé 13 qui publient leurs source maps, une qui laissait n’importe quel site appeler son API, et pas un seul mauvais certificat.","75 de ces applications livraient quelque chose qui ressemble à une clé dans le code qu’un visiteur télécharge. La plupart étaient des clés Google, en général sans problème. Dix étaient des clés OpenAI, et quiconque en trouve une peut la dépenser.","Sur les 35 bases de données Bolt que nous avons vraiment pu interroger, 27 ont rendu des lignes à une requête sans connexion. Les deux problèmes sont des réglages dans votre propre projet.","6NKTVa0YXaRdI3AzVxyWW2P_32Qyt2UabEdwnKuA1Xs",[737,743,749,755,761,767,773,779,785,791,792,798,804,810,817,823,829,834,840,846,852,858,864,870,876,881,887,893,899,905,911,917,922,928,934,940,946,952,958,963,968,974,980,986,992,998,1004,1010,1015,1021,1027,1033,1038,1043,1049,1053,1059,1065,1070,1075,1081],{"path":738,"title":739,"description":740,"published":741,"category":694,"image":742,"draft":698},"\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":744,"title":745,"description":746,"published":747,"category":694,"image":748,"draft":698},"\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":750,"title":751,"description":752,"published":753,"category":694,"image":754,"draft":698},"\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":756,"title":757,"description":758,"published":759,"category":694,"image":760,"draft":698},"\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":762,"title":763,"description":764,"published":765,"category":694,"image":766,"draft":698},"\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":768,"title":769,"description":770,"published":771,"category":694,"image":772,"draft":698},"\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":774,"title":775,"description":776,"published":777,"category":694,"image":778,"draft":698},"\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":780,"title":781,"description":782,"published":783,"category":694,"image":784,"draft":698},"\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":786,"title":787,"description":788,"published":789,"category":694,"image":790,"draft":698},"\u002Fblog\u002Fis-v0-safe","Sécurité de v0 : les 1 790 applications scannées ont toutes eu A","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.","2026-10-03","\u002Fblog\u002Fis-v0-safe\u002Fcard-800x500.png",{"path":727,"title":5,"description":697,"published":728,"category":694,"image":715,"draft":698},{"path":793,"title":794,"description":795,"published":796,"category":694,"image":797,"draft":698},"\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":799,"title":800,"description":801,"published":802,"category":694,"image":803,"draft":698},"\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":805,"title":806,"description":807,"published":808,"category":694,"image":809,"draft":698},"\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":811,"title":812,"description":813,"published":814,"category":815,"image":816,"draft":698},"\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":818,"title":819,"description":820,"published":821,"category":815,"image":822,"draft":698},"\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":824,"title":825,"description":826,"published":827,"category":815,"image":828,"draft":698},"\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":830,"title":831,"description":832,"published":827,"category":694,"image":833,"draft":698},"\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":835,"title":836,"description":837,"published":838,"category":694,"image":839,"draft":698},"\u002Fblog\u002Fopen-api-endpoint-exposed","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":841,"title":842,"description":843,"published":844,"category":694,"image":845,"draft":698},"\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":847,"title":848,"description":849,"published":850,"category":815,"image":851,"draft":698},"\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":853,"title":854,"description":855,"published":856,"category":694,"image":857,"draft":698},"\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":859,"title":860,"description":861,"published":862,"category":694,"image":863,"draft":698},"\u002Fblog\u002Fis-lovable-safe","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":865,"title":866,"description":867,"published":868,"category":694,"image":869,"draft":698},"\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":871,"title":872,"description":873,"published":874,"category":694,"image":875,"draft":698},"\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":431,"title":877,"description":878,"published":879,"category":694,"image":880,"draft":698},"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":882,"title":883,"description":884,"published":885,"category":694,"image":886,"draft":698},"\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":888,"title":889,"description":890,"published":891,"category":694,"image":892,"draft":698},"\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":894,"title":895,"description":896,"published":897,"category":694,"image":898,"draft":698},"\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":900,"title":901,"description":902,"published":903,"category":815,"image":904,"draft":698},"\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":906,"title":907,"description":908,"published":909,"category":815,"image":910,"draft":698},"\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":912,"title":913,"description":914,"published":915,"category":815,"image":916,"draft":698},"\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":675,"title":918,"description":919,"published":920,"category":694,"image":921,"draft":698},"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":923,"title":924,"description":925,"published":926,"category":694,"image":927,"draft":698},"\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":929,"title":930,"description":931,"published":932,"category":694,"image":933,"draft":698},"\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":935,"title":936,"description":937,"published":938,"category":694,"image":939,"draft":698},"\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":941,"title":942,"description":943,"published":944,"category":694,"image":945,"draft":698},"\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":947,"title":948,"description":949,"published":950,"category":694,"image":951,"draft":698},"\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":953,"title":954,"description":955,"published":956,"category":694,"image":957,"draft":698},"\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":236,"title":959,"description":960,"published":961,"category":694,"image":962,"draft":698},"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":379,"title":964,"description":965,"published":966,"category":694,"image":967,"draft":698},"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":969,"title":970,"description":971,"published":972,"category":694,"image":973,"draft":698},"\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":975,"title":976,"description":977,"published":978,"category":815,"image":979,"draft":698},"\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":981,"title":982,"description":983,"published":984,"category":694,"image":985,"draft":698},"\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":987,"title":988,"description":989,"published":990,"category":815,"image":991,"draft":698},"\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":993,"title":994,"description":995,"published":996,"category":694,"image":997,"draft":698},"\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":999,"title":1000,"description":1001,"published":1002,"category":694,"image":1003,"draft":698},"\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":1005,"title":1006,"description":1007,"published":1008,"category":694,"image":1009,"draft":698},"\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":268,"title":1011,"description":1012,"published":1013,"category":694,"image":1014,"draft":698},"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":1016,"title":1017,"description":1018,"published":1019,"category":815,"image":1020,"draft":698},"\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":1022,"title":1023,"description":1024,"published":1025,"category":815,"image":1026,"draft":698},"\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":1028,"title":1029,"description":1030,"published":1031,"category":694,"image":1032,"draft":698},"\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":372,"title":1034,"description":1035,"published":1036,"category":694,"image":1037,"draft":698},"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":638,"title":1039,"description":1040,"published":1041,"category":815,"image":1042,"draft":698},"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":1044,"title":1045,"description":1046,"published":1047,"category":694,"image":1048,"draft":698},"\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":258,"title":1050,"description":1051,"published":1047,"category":694,"image":1052,"draft":698},"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":1054,"title":1055,"description":1056,"published":1057,"category":694,"image":1058,"draft":698},"\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":1060,"title":1061,"description":1062,"published":1063,"category":815,"image":1064,"draft":698},"\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":482,"title":1066,"description":1067,"published":1068,"category":694,"image":1069,"draft":698},"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":1071,"title":1072,"description":1073,"published":1068,"category":815,"image":1074,"draft":698},"\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":1076,"title":1077,"description":1078,"published":1079,"category":815,"image":1080,"draft":698},"\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":1082,"title":1083,"description":1084,"published":1079,"category":694,"image":1085,"draft":698},"\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",1791705960639]