[{"data":1,"prerenderedAt":773},["ShallowReactive",2],{"blog-fr-safest-ai-app-builder":3,"blog-index-fr":533},{"id":4,"title":5,"body":6,"category":492,"cover":493,"coverAlt":494,"description":495,"draft":496,"extension":497,"faq":498,"image":514,"keywords":515,"meta":521,"navigation":522,"ogTitle":28,"path":523,"published":524,"seo":525,"stem":526,"tldr":527,"updated":531,"__hash__":532},"blog_fr\u002Fblog\u002Fsafest-ai-app-builder.md","Quel builder d'app IA est le plus sûr ? 30 998 apps testées",{"type":7,"value":8,"toc":480},"minimark",[9,13,16,24,29,32,35,38,42,45,58,61,65,68,71,79,83,86,235,248,256,259,280,287,291,294,297,300,306,314,322,326,329,332,421,426,429,439,443,465,472],[10,11,12],"p",{},"Vous avez choisi un builder avant de rien savoir d'aucun d'entre eux. Peut-être\nqu'un fil de discussion en recommandait un, peut-être que la démo vous a plu,\npeut-être que c'était celui de votre ami. Et depuis, quelque part, vous avez vu\nquelqu'un affirmer que celui que vous avez choisi est le mauvais, et vous vous\nêtes demandé si le builder d'app IA le plus sûr n'était pas l'un des autres\ndepuis le début.",[10,14,15],{},"Alors nous l'avons mesuré. En août 2026, nous avons scanné 30 998 apps actives\npubliées depuis Lovable, Base44, Replit, v0 et Bolt, et fait tourner les mêmes\nneuf vérifications externes sur chacune d'elles.",[10,17,18,19,23],{},"Voici ce que les comparatifs se trompent à écrire : ",[20,21,22],"strong",{},"le builder que vous avez\nchoisi n'est presque jamais ce qui décide si votre app est exposée."," Les cinq\nsont tous ressortis entre 99 % et 100 % sur au moins un constat. Les vraies\ndifférences entre eux sont larges, et ce sont des différences de réglages par\ndéfaut plutôt que de sécurité.",[25,26,28],"h2",{"id":27},"quel-builder-dapp-ia-est-le-plus-sûr","Quel builder d'app IA est le plus sûr ?",[10,30,31],{},"Aucun, et le classement que vous cherchez n'existe pas.",[10,33,34],{},"Chaque builder de ce scan a produit des apps avec des constats, à peu près au\nmême rythme, parce que le constat le plus fréquent est posé par l'hébergement et\nnon par la personne qui a construit l'app. Sous ce gros titre, les builders\ndivergent nettement, mais ils divergent sur des choses comme la publication ou\nnon de votre code source à côté de votre app, pas sur la capacité d'un inconnu à\nlire vos utilisateurs.",[10,36,37],{},"Ce qui sépare un A d'un D, c'est quelque chose que vous avez fait après avoir\nchoisi le builder. Le plus souvent, une seule décision : vous avez branché une\nbase de données.",[25,39,41],{"id":40},"ce-que-nous-avons-mesuré","Ce que nous avons mesuré",[10,43,44],{},"Les mêmes neuf vérifications que nous ferions tourner sur votre app, lues de\nl'extérieur, sans connexion et sans accès au compte de qui que ce soit.",[10,46,47,48,51,52,57],{},"Nous avons scanné chaque app entre le 12 et le 14 août 2026, et 30 998 d'entre\nelles ont donné un résultat que nous pouvions classer. Chaque pourcentage\nci-dessous est une part des apps sur lesquelles cette vérification a\neffectivement ",[20,49,50],{},"répondu",", jamais une part de tout ce que nous avons scanné. Une\nvérification qui n'a pas pu aboutir est enregistrée comme inconnue, pas comme\nréussie, et c'est pour cela que les dénominateurs bougent dans les tableaux. La\nméthode complète et les données sous-jacentes sont\n",[53,54,56],"a",{"href":55},"\u002Fresearch\u002Fvibe-coded-app-security-2026","dans le rapport",".",[10,59,60],{},"Deux choses que nous n'avons pas faites. Nous ne nous sommes connectés nulle\npart, et nous n'avons lu les lignes de personne : là où une table a répondu, nous\navons demandé à la base combien de lignes elle rendrait, et nous nous sommes\narrêtés là. Aucune app n'est nommée ici ni ailleurs dans ce que nous publions.",[25,62,64],{"id":63},"chaque-builder-est-à-99-et-ce-chiffre-dit-moins-quil-nen-a-lair","Chaque builder est à 99 %, et ce chiffre dit moins qu'il n'en a l'air",[10,66,67],{},"Parce que presque tout cela est un seul constat, et ce constat appartient à la\nplateforme.",[10,69,70],{},"Des en-têtes de sécurité manquants sont apparus sur 18 539 des 18 554 apps\nLovable, sur les 5 438 apps Base44, sur 1 790 apps v0 sur 1 790, sur 1 121 apps\nBolt sur 1 123 et sur 2 924 apps Replit sur 3 042. Les en-têtes sont envoyés par\nce qui sert votre app : sur le domaine d'un builder, ils sont donc une propriété\nde ce domaine et identiques sur chaque app qui s'y trouve.",[10,72,73,74,78],{},"C'est un vrai constat, et il vaut la peine d'être réglé quand vous passez sur\nvotre propre domaine. Mais c'est la\n",[53,75,77],{"href":76},"\u002Fblog\u002Fmissing-security-headers","ligne la moins urgente d'un rapport",", et c'est\nl'essentiel de ce que compte la phrase \"99 % des apps ont un problème\".",[25,80,82],{"id":81},"la-vraie-différence-entre-builders-ce-sont-les-réglages-par-défaut","La vraie différence entre builders, ce sont les réglages par défaut",[10,84,85],{},"Chaque builder livre un jeu de réglages par défaut différent, et ceux-ci se\nretrouvent dans presque toutes les apps qu'il fabrique.",[87,88,89,118],"table",{},[90,91,92],"thead",{},[93,94,95,99,103,106,109,112,115],"tr",{},[96,97,98],"th",{},"Builder",[96,100,102],{"align":101},"right","Apps scannées",[96,104,105],{"align":101},"Au moins un constat",[96,107,108],{"align":101},"Code source publié",[96,110,111],{"align":101},"Constat cross-origin",[96,113,114],{"align":101},"Clé secrète publiée",[96,116,117],{"align":101},"Notée D ou F",[119,120,121,145,170,192,213],"tbody",{},[93,122,123,127,130,133,136,139,142],{},[124,125,126],"td",{},"Lovable",[124,128,129],{"align":101},"18 554",[124,131,132],{"align":101},"99 %",[124,134,135],{"align":101},"225 sur 18 553",[124,137,138],{"align":101},"8 sur 18 518",[124,140,141],{"align":101},"822 (4 %)",[124,143,144],{"align":101},"407",[93,146,147,150,153,156,159,164,167],{},[124,148,149],{},"Base44",[124,151,152],{"align":101},"5 438",[124,154,155],{"align":101},"100 %",[124,157,158],{"align":101},"3 229 sur 5 434 (59 %)",[124,160,161],{"align":101},[20,162,163],{},"5 418 sur 5 419 (99 %)",[124,165,166],{"align":101},"103 (2 %)",[124,168,169],{"align":101},"2",[93,171,172,175,178,180,183,186,189],{},[124,173,174],{},"Replit",[124,176,177],{"align":101},"3 042",[124,179,132],{"align":101},[124,181,182],{"align":101},"168 sur 3 041 (6 %)",[124,184,185],{"align":101},"1 129 sur 3 037 (37 %)",[124,187,188],{"align":101},"219 (7 %)",[124,190,191],{"align":101},"9",[93,193,194,197,200,202,205,208,211],{},[124,195,196],{},"v0",[124,198,199],{"align":101},"1 790",[124,201,155],{"align":101},[124,203,204],{"align":101},"0 sur 1 790",[124,206,207],{"align":101},"0 sur 1 786",[124,209,210],{"align":101},"0",[124,212,210],{"align":101},[93,214,215,218,221,223,226,229,232],{},[124,216,217],{},"Bolt",[124,219,220],{"align":101},"1 123",[124,222,155],{"align":101},[124,224,225],{"align":101},"13 sur 1 123",[124,227,228],{"align":101},"5 sur 1 120",[124,230,231],{"align":101},"75 (7 %)",[124,233,234],{"align":101},"15",[10,236,237,238,242,243,247],{},"La colonne des source maps est celle à lire attentivement, car sur Base44 elle ne\nmesure pas la même chose que sur les quatre autres. Nous avons rouvert 30 apps\nBase44 signalées en septembre : sur 27, la seule carte qui répondait était\n",[239,240,241],"code",{},"\u002Fstatic\u002Fjs\u002Fbadge.js.map",", celle du script de badge de Base44, et sur aucune des\n30 une carte ne couvrait les fichiers du propriétaire. Ces 59 % sont donc une\nplateforme publiant l'un de ses propres fichiers sur chaque app qu'elle héberge,\net non 3 229 propriétaires qui laissent fuir leur code. Sur Lovable, Replit et\nBolt, la même colonne désigne bien le code du propriétaire, et c'est pourquoi\n1 %, 6 % et 59 % ne se lisent pas de haut en bas comme un classement.\n",[53,244,246],{"href":245},"\u002Fblog\u002Fbase44-source-maps","Ce que nous avons trouvé dans ces cartes Base44"," en\nest le compte rendu complet.",[10,249,250,251,255],{},"La colonne à 99 % est la vraie, et elle vient elle aussi de Base44 : la\nplateforme règle le CORS pour chaque app qu'elle héberge et n'offre aucun réglage\npar app. Code source publié signifie, quand il est le vôtre, que les fichiers\nd'origine derrière votre app sont lisibles depuis les outils de développement du\nnavigateur.\n",[53,252,254],{"href":253},"\u002Fblog\u002Fsource-maps-exposed-in-production","Ce que cela expose et ce que cela n'expose pas","\nvaut une lecture si vous êtes sur l'une des quatre autres.",[10,257,258],{},"La colonne des clés secrètes est celle dont tout le monde attend qu'elle domine,\net elle ne domine pas. Une clé digne d'être nommée est apparue dans 4 % à 7 % des\napps sur trois des cinq builders, et dans aucune des apps v0.",[10,260,261,262,265,266,269,270,265,273,276,277,57],{},"Si vous voulez la version en langage clair pour le builder que vous utilisez\nvraiment, chacun a sa page : ",[53,263,126],{"href":264},"\u002Fis-your-lovable-app-safe",",\n",[53,267,149],{"href":268},"\u002Fis-your-base44-app-safe",", ",[53,271,174],{"href":272},"\u002Fis-your-replit-app-safe",[53,274,196],{"href":275},"\u002Fis-your-v0-app-safe"," et ",[53,278,217],{"href":279},"\u002Fis-your-bolt-app-safe",[10,281,282,283,57],{},"Ou évitez la lecture : notre scan gratuit fait tourner ces mêmes vérifications\nsur votre site en ligne et vous dit lesquelles votre app accroche. Environ 20\nsecondes, sans compte : ",[53,284,286],{"href":285},"\u002F#scan","scannez votre app",[25,288,290],{"id":289},"ce-qui-décide-vraiment-un-d-ou-un-f","Ce qui décide vraiment un D ou un F",[10,292,293],{},"Une base de données, et ce que vous en avez fait.",[10,295,296],{},"Lovable a produit 407 apps notées D ou F sur 18 554. v0 n'en a produit aucune sur\n1 790. Cela ressemble à un verdict sur les deux builders jusqu'à ce que vous\nregardiez ce que sont ces apps : 35 % des apps Lovable nomment un projet de base\nde données, contre 1 % environ des apps v0.",[10,298,299],{},"Les vérifications qui peuvent produire un D ou un F sont presque toutes des\nvérifications de base de données. Une app sans base a moins de choses qui peuvent\nmal tourner et moins de choses à regarder pour nous. La ligne Lovable ne mesure\ndonc pas un builder plus mauvais, elle mesure un builder dont les utilisateurs\nbranchent des bases de données, ce qui est l'essentiel de la raison pour laquelle\non le choisit.",[301,302],"diagram",{"alt":303,"caption":304,"src":305},"Deux apps dessinées côte à côte comme deux panneaux identiques. Celui de gauche contient un seul bloc vide avec trois coches vertes en dessous et la lettre A dans son coin supérieur. Celui de droite contient le même bloc et les mêmes trois coches, avec un trait pointillé descendant vers un cylindre de base de données rouge et une croix rouge, et la lettre D dans son coin supérieur.","Les vérifications extérieures ressortent identiques des deux côtés. Tout ce qui peut produire une note sérieuse vit dans la partie que vous avez branchée vous-même.","\u002Fblog\u002Fsafest-ai-app-builder\u002Fwhere-a-grade-comes-from-1600x700.png",[10,307,308,309,313],{},"Sur les 3 553 apps Lovable dont la base nous a répondu, 2 017 avaient au moins\nune table qu'un inconnu pouvait lire sans se connecter. C'est\n",[53,310,312],{"href":311},"\u002Fblog\u002Fcan-anyone-read-your-supabase-database","le constat à corriger en premier",",\net il n'a rien à voir avec le builder qui a généré votre interface.",[10,315,316,317,321],{},"C’est chez Lovable que ce chiffre est assez gros pour mériter son propre\narticle : ",[53,318,320],{"href":319},"\u002Fblog\u002Fis-lovable-safe","ce que 18 554 applications Lovable ont\nmontré"," passe les mêmes neuf vérifications sur la plus\ngrande cohorte dont nous disposons.",[25,323,325],{"id":324},"pourquoi-nous-nallons-pas-les-classer","Pourquoi nous n'allons pas les classer",[10,327,328],{},"Parce que pour trois des cinq, nous n'avons pas pu vérifier assez de bases de\ndonnées pour dire quoi que ce soit.",[10,330,331],{},"Voici la partie des données que tout classement laisse de côté :",[87,333,334,349],{},[90,335,336],{},[93,337,338,340,343,346],{},[96,339,98],{},[96,341,342],{"align":101},"Nomme un projet de base",[96,344,345],{"align":101},"Bases qui nous ont répondu",[96,347,348],{},"Avait une table lisible",[119,350,351,364,378,393,408],{},[93,352,353,355,358,361],{},[124,354,126],{},[124,356,357],{"align":101},"35 %",[124,359,360],{"align":101},"3 553",[124,362,363],{},"2 017, soit 57 %",[93,365,366,368,371,375],{},[124,367,149],{},[124,369,370],{"align":101},"27 %",[124,372,373],{"align":101},[20,374,169],{},[124,376,377],{},"2 sur les 2 que nous avons atteintes",[93,379,380,382,385,390],{},[124,381,217],{},[124,383,384],{"align":101},"24 %",[124,386,387],{"align":101},[20,388,389],{},"35",[124,391,392],{},"27 sur les 35 que nous avons atteintes",[93,394,395,397,400,405],{},[124,396,174],{},[124,398,399],{"align":101},"1 %",[124,401,402],{"align":101},[20,403,404],{},"5",[124,406,407],{},"4 sur les 5 que nous avons atteintes",[93,409,410,412,414,418],{},[124,411,196],{},[124,413,399],{"align":101},[124,415,416],{"align":101},[20,417,210],{},[124,419,420],{},"rien à vérifier",[301,422],{"alt":423,"caption":424,"src":425},"Cinq lignes, chacune introduite par le logo d'un builder et le nombre de ses apps que nous avons scannées. Chaque ligne dessine ces apps en barre pâle, avec les bases qui nous ont répondu remplies en plein. La partie pleine de Lovable est un large bloc portant 3 553 ; celles de Base44, Replit et Bolt sont des filets portant 2, 5 et 35, et celle de v0 est un cercle vide en pointillés portant 0.","La partie pleine de chaque barre est ce que nous avons pu vérifier réellement. Quatre des cinq sont trop fines pour porter un pourcentage.","\u002Fblog\u002Fsafest-ai-app-builder\u002Fwhat-we-could-check-1600x620.png",[10,427,428],{},"Regardez la ligne Base44. Plus d'un quart de ses apps nomment un projet de base\nde données, et exactement deux de ces bases nous ont répondu. Nous n'allons pas\ntransformer deux apps en taux et le poser à côté d'un chiffre bâti sur 3 553. Et\npersonne d'autre ayant scanné depuis l'extérieur ne le peut non plus, quoi qu'en\ndise son tableau comparatif.",[430,431,433],"callout",{"type":432},"warn",[10,434,435,438],{},[20,436,437],{},"Une vérification qui n'a pas pu aboutir n'est pas une vérification réussie.","\nC'est la règle qui décide de l'essentiel de ce qui précède, et c'est celle qui\ndisparaît discrètement dès qu'un scan devient un classement. Une app que nous\nn'avons pas pu atteindre est inconnue. Une base qui n'a jamais répondu est\ninconnue. Compter l'une ou l'autre comme propre produit un graphique plus net et\nun graphique faux, et c'est la pire chose qu'un rapport de sécurité puisse faire\nà quelqu'un qui cesse ensuite de s'inquiéter.",[25,440,442],{"id":441},"ce-quil-faut-vérifier-sur-votre-propre-app","Ce qu'il faut vérifier sur votre propre app",[444,445,446],"key-takeaways",{},[447,448,449,453,456,459,462],"ul",{},[450,451,452],"li",{},"Arrêtez de chercher un builder plus sûr. Rien dans ces données ne justifie une migration, et migrer reconstruit toute votre app pour changer une ligne sur laquelle vous n'avez jamais été noté.",[450,454,455],{},"Commencez par vos tables de base de données, quel que soit le builder utilisé. Une table qu'un inconnu peut lire est le constat qui vide une app, et c'est la seule chose ici que vous seul pouvez corriger.",[450,457,458],{},"Cherchez si votre builder publie votre code source, et coupez-le si c'est le cas. C'est un réglage, et sur l'une des cinq plateformes ci-dessus il est actif par défaut pour trois apps sur cinq.",[450,460,461],{},"Traitez le constat des en-têtes comme de l'entretien. Il est réel, il touche presque toutes les apps sur le domaine d'un builder, et ce n'est pas ce que quelqu'un utilisera contre vous.",[450,463,464],{},"Vérifiez toute clé dans votre code publié avant de vous inquiéter du reste de cette page, parce que c'est le seul constat qui coûte déjà de l'argent pendant que vous lisez.",[10,466,467,468,57],{},"Tout cela se vérifie à la main. Garder la réponse vraie le mois prochain est la\npartie qui ne reste pas faite, et c'est pour cela que Reeve Care existe : il fait\ntourner ces mêmes vérifications selon un calendrier et vous prévient quand une\nréponse se dégrade, puis garde des copies vérifiées de votre base hors du compte\nde votre fournisseur, pour qu'il y ait quelque chose à remettre. Cette seconde\nmoitié compte ici parce que nous ne vérifions jamais que la lecture, et la même\nrègle permissive qui laisse un inconnu lire une table le laisse en général y\nécrire. ",[53,469,471],{"href":470},"\u002Fpricing","Ce qu'il surveille et ce qu'il coûte",[10,473,474,475,479],{},"Si vous préférez avancer avec une liste, la\n",[53,476,478],{"href":477},"\u002Fchecklist","checklist de sécurité en 10 minutes"," couvre l'ensemble en langage\nclair.",{"title":481,"searchDepth":482,"depth":482,"links":483},"",3,[484,486,487,488,489,490,491],{"id":27,"depth":485,"text":28},2,{"id":40,"depth":485,"text":41},{"id":63,"depth":485,"text":64},{"id":81,"depth":485,"text":82},{"id":289,"depth":485,"text":290},{"id":324,"depth":485,"text":325},{"id":441,"depth":485,"text":442},"Bases de la sécurité","\u002Fblog\u002Fsafest-ai-app-builder\u002Fcover-1200x630.png","Cinq tuiles blanches identiques alignées sur un fond sombre, de même taille et régulièrement espacées, chacune portant le logo d'un builder.","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.",false,"md",[499,502,505,508,511],{"q":500,"a":501},"Quel builder crée les apps les plus sûres ?","Aucun, de façon mesurable. Sur 30 998 apps actives, chaque builder que nous avons scanné est sorti entre 99 % et 100 % sur au moins un constat, et l'essentiel vient des en-têtes de sécurité manquants, posés par l'hébergement et non par vous. Les différences entre builders sont des différences de réglages par défaut : ce qui est publié à côté de votre app, et comment la connexion à votre API est configurée. Aucun de ces réglages ne produit une note sérieuse.",{"q":503,"a":504},"Est-ce que le builder que j'ai choisi compte vraiment ?","Il compte pour ce dont vous héritez le premier jour, et bien moins pour la suite. Certains builders publient votre code source avec chaque app, d'autres non. Certains posent par défaut une règle cross-origin grande ouverte, d'autres non. Cela vaut la peine d'être su, et le plus souvent d'être changé. Mais le constat qui coûte vraiment leurs données aux gens, c'est une table de base de données lisible, et vous l'obtenez en branchant une base et en écrivant une règle permissive. Cela se fait sur n'importe quel builder.",{"q":506,"a":507},"Toutes les apps de mon builder échouent sur les en-têtes de sécurité. Est-ce ma faute ?","Non, et le plus souvent vous ne pouvez pas non plus y changer quoi que ce soit depuis le builder. Les en-têtes de sécurité sont envoyés par ce qui sert votre app : sur un domaine de builder, ils sont donc le réglage par défaut de la plateforme et identiques sur chaque app qui y est hébergée. C'est exactement pour cela que le chiffre est de 99 % ou 100 % pour les cinq. C'est pour la même raison la ligne la moins urgente d'un rapport : elle est réelle, elle vaut la peine d'être corrigée quand vous passez sur votre propre domaine, et elle ne dit rien sur la capacité de quiconque à atteindre vos données.",{"q":509,"a":510},"v0 n'a aucune app notée D ou F. Est-ce le plus sûr pour autant ?","C'est celui qui a le moins de bases de données branchées. Seulement 1 % environ des apps v0 que nous avons scannées nommait un projet de base de données, contre 35 % des apps Lovable, et les vérifications qui produisent un D ou un F sont des vérifications de base de données. Une app sans base a moins de choses qui peuvent mal tourner et moins de choses que nous pouvons regarder. Lisez cette ligne comme une information sur ce que sont ces apps, pas sur la qualité de la protection du builder.",{"q":512,"a":513},"Dois-je migrer mon app vers un autre builder pour la rendre plus sûre ?","Non. Migrer signifie tout reconstruire, et cela ne change presque rien à cette liste, parce que les constats qui comptent vivent dans les services que vous avez branchés et non dans le builder qui a généré votre code. Les deux qui valent la peine sont les règles sur vos tables de base de données et toute clé secrète posée dans votre code publié. Les deux vous suivront chez n'importe quel builder, et les deux se corrigent là où vous êtes déjà.","\u002Fblog\u002Fsafest-ai-app-builder\u002Fcard-800x500.png",[516,517,518,519,520],"builder d'app ia le plus sûr","quel builder d'app ia est le plus sûr","comparatif sécurité builders ia","lovable vs bolt sécurité","les apps créées par ia sont-elles sûres",{},true,"\u002Fblog\u002Fsafest-ai-app-builder","2026-09-11",{"title":5,"description":495},"blog\u002Fsafest-ai-app-builder",[528,529,530],"Il n'existe pas de builder d'app IA le plus sûr. Les cinq que nous avons scannés sortent tous entre 99 % et 100 % sur au moins un constat, et presque tout cela est un en-tête de navigateur posé par leur hébergement.","Ce qui diffère entre builders, ce sont les réglages par défaut, et les écarts sont larges. Les 3 229 source maps de Base44 sur 5 434 sont le script de badge de la plateforme, pas l'app de quelqu'un ; les 225 de Lovable sur 18 553 sont le code du propriétaire.","Ce qui décide une note sérieuse, ce n'est pas le builder. C'est d'avoir branché une base de données et laissé une table lisible.","2026-09-21","vnpLCL9MimOQJu0BxDwJCL5GIozJbV8TbsyE3Z5QFmg",[534,541,547,551,557,563,569,574,580,586,592,598,604,605,611,617,623,629,635,641,646,652,658,664,670,676,682,688,694,700,706,712,718,724,730,735,739,745,751,757,762,768],{"path":535,"title":536,"description":537,"published":538,"category":539,"image":540,"draft":496},"\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","Backups","\u002Fblog\u002Fsupabase-backup-auth-users\u002Fcard-800x500.png",{"path":542,"title":543,"description":544,"published":545,"category":492,"image":546,"draft":496},"\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":319,"title":548,"description":549,"published":531,"category":492,"image":550,"draft":496},"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.","\u002Fblog\u002Fis-lovable-safe\u002Fcard-800x500.png",{"path":552,"title":553,"description":554,"published":555,"category":492,"image":556,"draft":496},"\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":558,"title":559,"description":560,"published":561,"category":492,"image":562,"draft":496},"\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":564,"title":565,"description":566,"published":567,"category":492,"image":568,"draft":496},"\u002Fblog\u002Fvite-and-next-public-env-vars","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":245,"title":570,"description":571,"published":572,"category":492,"image":573,"draft":496},"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":575,"title":576,"description":577,"published":578,"category":492,"image":579,"draft":496},"\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":581,"title":582,"description":583,"published":584,"category":492,"image":585,"draft":496},"\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":587,"title":588,"description":589,"published":590,"category":539,"image":591,"draft":496},"\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":593,"title":594,"description":595,"published":596,"category":539,"image":597,"draft":496},"\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":599,"title":600,"description":601,"published":602,"category":539,"image":603,"draft":496},"\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":523,"title":5,"description":495,"published":524,"category":492,"image":514,"draft":496},{"path":606,"title":607,"description":608,"published":609,"category":492,"image":610,"draft":496},"\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":612,"title":613,"description":614,"published":615,"category":492,"image":616,"draft":496},"\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":618,"title":619,"description":620,"published":621,"category":492,"image":622,"draft":496},"\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":624,"title":625,"description":626,"published":627,"category":492,"image":628,"draft":496},"\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":630,"title":631,"description":632,"published":633,"category":492,"image":634,"draft":496},"\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":636,"title":637,"description":638,"published":639,"category":492,"image":640,"draft":496},"\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":76,"title":642,"description":643,"published":644,"category":492,"image":645,"draft":496},"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":647,"title":648,"description":649,"published":650,"category":492,"image":651,"draft":496},"\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":653,"title":654,"description":655,"published":656,"category":492,"image":657,"draft":496},"\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":659,"title":660,"description":661,"published":662,"category":539,"image":663,"draft":496},"\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":665,"title":666,"description":667,"published":668,"category":492,"image":669,"draft":496},"\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":671,"title":672,"description":673,"published":674,"category":539,"image":675,"draft":496},"\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":677,"title":678,"description":679,"published":680,"category":492,"image":681,"draft":496},"\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":683,"title":684,"description":685,"published":686,"category":492,"image":687,"draft":496},"\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":689,"title":690,"description":691,"published":692,"category":492,"image":693,"draft":496},"\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":695,"title":696,"description":697,"published":698,"category":492,"image":699,"draft":496},"\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":701,"title":702,"description":703,"published":704,"category":539,"image":705,"draft":496},"\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":707,"title":708,"description":709,"published":710,"category":539,"image":711,"draft":496},"\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":713,"title":714,"description":715,"published":716,"category":492,"image":717,"draft":496},"\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":719,"title":720,"description":721,"published":722,"category":492,"image":723,"draft":496},"\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":725,"title":726,"description":727,"published":728,"category":539,"image":729,"draft":496},"\u002Fblog\u002Fai-agent-deleted-my-database","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":311,"title":731,"description":732,"published":733,"category":492,"image":734,"draft":496},"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":253,"title":736,"description":737,"published":733,"category":492,"image":738,"draft":496},"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":740,"title":741,"description":742,"published":743,"category":492,"image":744,"draft":496},"\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":746,"title":747,"description":748,"published":749,"category":539,"image":750,"draft":496},"\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":752,"title":753,"description":754,"published":755,"category":492,"image":756,"draft":496},"\u002Fblog\u002Fsupabase-rls-on-but-table-still-public","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":758,"title":759,"description":760,"published":755,"category":539,"image":761,"draft":496},"\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":763,"title":764,"description":765,"published":766,"category":539,"image":767,"draft":496},"\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":769,"title":770,"description":771,"published":766,"category":492,"image":772,"draft":496},"\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",1790150953890]