[{"data":1,"prerenderedAt":784},["ShallowReactive",2],{"blog-fr-base44-source-maps":3,"blog-index-fr":542},{"id":4,"title":5,"body":6,"category":500,"cover":501,"coverAlt":502,"description":503,"draft":504,"extension":505,"faq":506,"image":522,"keywords":523,"meta":531,"navigation":532,"ogTitle":5,"path":533,"published":534,"seo":535,"stem":536,"tldr":537,"updated":534,"__hash__":541},"blog_fr\u002Fblog\u002Fbase44-source-maps.md","Sécurité Base44 : ce qu’un scan signale, et ce qui dépend de vous",{"type":7,"value":8,"toc":489},"minimark",[9,13,21,24,29,32,41,170,173,176,179,183,186,198,206,212,215,218,221,229,233,236,243,251,258,266,270,273,289,295,305,310,314,317,344,347,430,434,467,470,477],[10,11,12],"p",{},"Vous avez scanné votre appli Base44 et le rapport est revenu avec un B, et trois\nlignes ambrées en dessous : des en-têtes de sécurité manquants, une API ouverte\nà n’importe quel site, et votre code source original publié. Ou quelqu’un de\ntechnique a regardé pour vous et a dit les trois mêmes choses d’une voix plus\ninquiète. Pour une appli dont vous n’avez jamais lu le code, la dernière est\ncelle qui frappe le plus fort.",[10,14,15,16,20],{},"Voici la partie que guide après guide sur la sécurité Base44 se trompe :\n",[17,18,19],"strong",{},"presque chaque ligne de ce rapport parle de Base44."," Trois des quatre\nsignalements qui apparaissent sur presque chaque appli sont fixés par la\nplateforme, pour chaque appli qu’elle héberge. Et l’un des trois est une phrase\nque notre propre scan formule mal. Cet article existe parce que nous sommes\nretournés lire ce qu’il avait trouvé.",[10,22,23],{},"Voyez votre appli comme un appartement dans un immeuble qui appartient à\nBase44. Un scan lit l’immeuble depuis la rue. La serrure de la porte d’entrée,\nl’enseigne au-dessus, la règle sur qui peut regarder par les fenêtres : c’est le\npropriétaire de l’immeuble qui les a décidées, et chaque appartement les\npartage. Ce que vous avez apporté est une liste plus courte, et le reste de cet\narticle parcourt le rapport ligne par ligne pour dire ce qui relève de qui.",[25,26,28],"h2",{"id":27},"ce-quun-scan-de-sécurité-base44-trouve-sur-presque-chaque-appli","Ce qu’un scan de sécurité Base44 trouve sur presque chaque appli",[10,30,31],{},"Trois signalements sur presque chacune, un quatrième sur environ la moitié, et\nles quatre décidés par Base44.",[10,33,34,35,40],{},"En août 2026, nous avons lancé\n",[36,37,39],"a",{"href":38},"\u002Fresearch\u002Fvibe-coded-app-security-2026","les neuf mêmes vérifications"," sur\n30 998 applis vibe-codées en ligne, dont 5 438 publiées sur Base44. Les 5 438\nmanquaient d’en-têtes de sécurité. 5 417 ont répondu à une requête venue d’un\nsite inventé avec un en-tête CORS joker. 3 229 d’entre elles, 59 %, servaient\nune source map. 2 705 avaient une adresse, nommée dans le code même de l’appli,\nqui répondait à une requête sans connexion et renvoyait des données.",[42,43,44,69],"table",{},[45,46,47],"thead",{},[48,49,50,54,57,60,63,66],"tr",{},[51,52,53],"th",{},"Outil",[51,55,56],{},"Applis",[51,58,59],{},"Source map publiée",[51,61,62],{},"Signalement CORS",[51,64,65],{},"Une clé dans le bundle",[51,67,68],{},"Notées D ou F",[70,71,72,93,113,133,153],"tbody",{},[48,73,74,78,81,84,87,90],{},[75,76,77],"td",{},"Base44",[75,79,80],{},"5 438",[75,82,83],{},"3 229 (59 %)",[75,85,86],{},"5 418 (99 %)",[75,88,89],{},"103 (2 %)",[75,91,92],{},"2",[48,94,95,98,101,104,107,110],{},[75,96,97],{},"Lovable",[75,99,100],{},"18 554",[75,102,103],{},"225 (1 %)",[75,105,106],{},"8 (moins de 1 %)",[75,108,109],{},"822 (4 %)",[75,111,112],{},"407",[48,114,115,118,121,124,127,130],{},[75,116,117],{},"Replit",[75,119,120],{},"3 042",[75,122,123],{},"168 (6 %)",[75,125,126],{},"1 129 (37 %)",[75,128,129],{},"219 (7 %)",[75,131,132],{},"9",[48,134,135,138,141,144,147,150],{},[75,136,137],{},"Bolt",[75,139,140],{},"1 123",[75,142,143],{},"13 (1 %)",[75,145,146],{},"5 (moins de 1 %)",[75,148,149],{},"75 (7 %)",[75,151,152],{},"15",[48,154,155,158,161,164,166,168],{},[75,156,157],{},"v0",[75,159,160],{},"1 790",[75,162,163],{},"0",[75,165,163],{},[75,167,163],{},[75,169,163],{},[10,171,172],{},"Chaque pourcentage porte sur les applis où la vérification a obtenu une\nréponse, ce qui explique que les bases diffèrent légèrement du nombre d’applis.\nUne vérification qui n’a pas pu atteindre une appli laisse cette appli de\ncôté. Elle n’est jamais comptée comme propre.",[10,174,175],{},"Lisez la ligne Base44 face à la ligne Lovable. Sur Lovable, les deux premiers\nsignalements n’apparaissent presque jamais, parce que l’hébergement de Lovable\nrègle les deux dans l’autre sens. Sur Base44, ils apparaissent presque à chaque\nfois. Une colonne aussi uniforme sur des milliers d’applis dont les\npropriétaires ne se sont jamais parlé, c’est à cela que ressemble un réglage de\nplateforme vu de l’extérieur. Personne ne l’a choisi dans sa propre appli.",[10,177,178],{},"Les deux dernières colonnes se décident à l’intérieur de chaque appli, et elles\nracontent l’autre moitié. Une clé dans le code compressé est apparue sur 2 %\ndes applis Base44 contre 4 % des applis Lovable, et 2 applis Base44 sur 5 438\nont eu un D, contre 407 applis Lovable sur 18 554. Ces deux applis Base44 sont\ndans la dernière section.",[25,180,182],{"id":181},"le-signalement-de-source-map-sur-une-appli-base44-cest-le-badge","Le signalement de source map sur une appli Base44, c’est le badge",[10,184,185],{},"Chaque source map qui répondait sur les applis Base44 que nous avons rouvertes\nappartenait au script du badge de Base44. Aucune ne contenait le code du\npropriétaire.",[10,187,188,189,192,193,197],{},"Une ",[17,190,191],{},"source map"," est un fichier qu’un outil de build écrit à côté du\nJavaScript compressé que votre site sert. Elle contient les fichiers\nd’origine, leurs noms et chaque commentaire, pour qu’une erreur puisse pointer\nla ligne que vous avez écrite plutôt que le caractère 48 000 d’une seule ligne\nimmense. Quand la map est publiée, quiconque appuie sur F12 lit le projet tel\nqu’il apparaissait dans l’éditeur, et\n",[36,194,196],{"href":195},"\u002Fblog\u002Fsource-maps-exposed-in-production","notre article précédent"," explique ce\nque cela coûte sur une appli dont la map est la vôtre.",[10,199,200,201,205],{},"Sur Base44, la map est à quelqu’un d’autre. Le 16 septembre 2026, nous sommes\nretournés sur 30 applis que notre scan d’août avait signalées et nous avons lu\nce que chaque map contenait. Sur 27 d’entre elles, la seule map qui répondait\nétait ",[202,203,204],"code",{},"\u002Fstatic\u002Fjs\u002Fbadge.js.map",", la map du petit script qui dessine le badge de\nBase44 sur la page, et ce qu’elle révèle, c’est le code de Base44 pour ce\nbadge. Sur les 3 autres, aucune map ne répondait. Sur aucune des 30, une map ne\ncouvrait les fichiers du propriétaire. Ces fichiers sont partis compressés et\nsans map sur chaque appli que nous avons ouverte, le premier fichier que la\npage charge comme chaque morceau qu’elle charge ensuite.",[207,208],"diagram",{"alt":209,"caption":210,"src":211},"Deux panneaux. À gauche, sous le logo Base44, chaque fichier de script de l’appli porte un anneau en pointillé là où serait une map, et seul le script du badge a une map, qui mène à un petit logo Base44. À droite, sous le logo Lovable, le script principal de l’appli a une map, et la map s’ouvre sur un dossier de fichiers lisibles.","Sur une appli Base44, la seule map qui répond appartient au script du badge, et elle contient le code de Base44. Sur une appli Lovable, la map, ce sont les propres fichiers du propriétaire.","\u002Fblog\u002Fbase44-source-maps\u002Fwhose-map-answers-1600x720.png",[10,213,214],{},"Les 59 % comptent donc autre chose que du code publié. Sur les 30 applis\nsignalées, 27 des 28 qui répondaient portent encore le script du badge dans\nleur page, et sur 30 applis jamais signalées, 29 ne le portent pas. Le chiffre\nqui se lit « trois applis Base44 sur cinq publient leur code » est plus proche\nde « trois applis Base44 sur cinq affichent le badge ».",[10,216,217],{},"Reste une ligne de notre propre rapport dont nous devons répondre. Elle dit\n« Votre code source original est publié », et sur une appli Base44 elle est\nvraie pour un fichier et fausse pour votre appli. La vérification a fait ce\npour quoi elle a été construite : suivre l’adresse au bas d’un script et\ncompter une map qui répond. Ici, le script appartient au propriétaire de\nl’immeuble. Sur Lovable, Replit et Bolt, la même ligne veut dire ce qu’elle\ndit. Sur 11 applis signalées de ces outils que nous avons rouvertes, 9\nservaient une map des propres pages et composants du propriétaire, et sur les\n2 autres, plus aucune map ne répondait.",[10,219,220],{},"Ce que cela signifie pour vous : rien de vous n’est dans cette map. La\nvérification qui vaut la peine, c’est l’autre : savoir si quelque chose que\nvous avez collé dans l’appli se trouve dans le fichier compressé que chaque\nvisiteur reçoit déjà. C’est plus bas.",[10,222,223,224,228],{},"Notre scan gratuit lit votre appli Base44 en ligne depuis l’extérieur, les neuf\nvérifications, en 20 secondes environ et sans compte, et écrit « Impossible à\nvérifier » pour tout ce à quoi il n’a pas pu répondre, au lieu d’une coche :\n",[36,225,227],{"href":226},"\u002Fsecurity-scanner","scannez votre appli",".",[25,230,232],{"id":231},"le-joker-cors-base44-le-fixe-et-rien-de-privé-ne-répond-derrière","Le joker CORS : Base44 le fixe, et rien de privé ne répond derrière",[10,234,235],{},"Vous ne pouvez pas le changer, et sur les applis Base44 que nous avons\nregardées, il n’y a aucune donnée privée derrière.",[10,237,238,239,242],{},"Le signalement, c’est une ligne dans les réponses de votre serveur,\n",[202,240,241],{},"Access-Control-Allow-Origin: *",", qui dit au navigateur d’un visiteur qu’une\npage de n’importe quel autre site peut lire cette réponse-là. La documentation\nde Base44 dit d’où elle vient (lue le 16 septembre 2026) : « Per-app CORS\nconfiguration is not currently available. Base44 manages CORS at the platform\nlevel. » Chaque appli de la plateforme l’envoie, et c’est ainsi que 5 417\napplis sur 5 419 se sont retrouvées avec le même signalement.",[10,244,245,246,250],{},"Qu’un joker compte ou non dépend de ce qui répond derrière, et\n",[36,247,249],{"href":248},"\u002Fblog\u002Fcors-wildcard-security-risk","l’article plus long"," explique pourquoi. En\nbref : l’en-tête arrive après que la réponse a déjà été envoyée, et seul un\nnavigateur le lit, donc le resserrer empêcherait les pages des autres sites de\nlire votre appli, et personne d’autre. Ce qui se trouve derrière sur une appli\nBase44, c’est l’appli elle-même, la page, le code compressé, le badge, que\nchaque visiteur télécharge de toute façon.",[10,252,253,254,257],{},"Le quatrième signalement est l’endroit où un joker compterait. Sur 2 705 applis\nBase44, environ la moitié, une adresse nommée dans le code de l’appli répondait\nà une requête sans connexion et renvoyait des données. Nous en avons rouvert\n12 le 16 septembre. Sur six, plus rien ne répondait. Sur les six autres,\nl’adresse qui répondait était à chaque fois la même, ",[202,255,256],{},"\u002Fapi\u002Fconsent\u002Fconfig",", et\nce qu’elle renvoie, ce sont les réglages de consentement aux cookies de\nl’appli : si une bannière de consentement est activée, quelles règles\nrégionales s’appliquent, pendant combien de mois la réponse est retenue. C’est\nde la configuration. Les lignes de personne ne s’y trouvent.",[10,259,260,261,265],{},"Vos données ne voyagent pas par ce chemin sur Base44. Votre appli interroge le\nbackend de Base44, le backend applique les règles de permission que vous avez\nposées sur chaque table, et la réponse revient par la même porte. Un scan de\nl’extérieur ne peut pas voir ces règles du tout, et c’est pour cela que le\n",[36,262,264],{"href":263},"\u002Fis-your-base44-app-safe","guide Base44"," consacre son temps à ce qu’un inconnu\npeut atteindre, et vous laisse vos règles.",[25,267,269],{"id":268},"ce-qui-dépend-de-vous-sur-une-appli-base44","Ce qui dépend de vous sur une appli Base44",[10,271,272],{},"Une liste courte, et les deux notes D du relevé en viennent.",[10,274,275,278,279,283,284,288],{},[17,276,277],{},"Une clé que vous avez collée."," 103 des 5 438 applis Base44, 2 %, servaient\nquelque chose en forme de clé dans le code que chaque visiteur télécharge. 95\nd’entre elles étaient des clés d’API Google, qui\n",[36,280,282],{"href":281},"\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend","demandent généralement une restriction dans Google Cloud",",\net pas de rotation. L’une était une clé secrète Stripe, et cette appli a eu un\nD. Base44 garde ses propres identifiants sur son serveur, donc une clé dans\nvotre bundle en est une que vous ou l’outil avez ajoutée pour une fonction :\nune carte, une balise d’analytics, un formulaire de paiement.\n",[36,285,287],{"href":286},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","Savoir de quel type il s’agit","\nse lit en une minute, et une clé secrète se renouvelle là où elle a été émise\navant de sortir du code.",[10,290,291,294],{},[17,292,293],{},"Les règles de permission sur vos tables."," Base44 les appelle data access\nrules, et elles décident qui peut lire et modifier chaque type\nd’enregistrement. Personne de l’extérieur ne peut les tester, nous compris, et\nc’est le seul endroit où un scan externe doit laisser un blanc. Le propre scan\nde sécurité de Base44 les lit, lui, et sa documentation dit qu’il est\ndisponible dans chaque formule, y compris la gratuite.",[10,296,297,300,301,304],{},[17,298,299],{},"Tout ce que vous avez connecté vous-même."," L’autre D du relevé était une\nappli Base44 avec un projet Supabase à elle, et dedans une table nommée comme\ndes données personnelles, qui répondait à une requête sans connexion.\nConnectez votre propre base et les\n",[36,302,303],{"href":263},"règles par ligne habituelles"," s’appliquent en\nentier, parce que ce projet répond directement à internet.",[207,306],{"alt":307,"caption":308,"src":309},"Un rapport de scan dessiné en six lignes. Les quatre premières, des en-têtes, le globe du CORS, un script avec sa map et une charge de données, sont dessinées en pâle et se terminent chacune par un petit logo Base44. Les deux dernières, une clé et une table de base de données, sont dessinées en couleur d’accent et se terminent chacune par une personne.","Six lignes qu’un scan peut imprimer sur une appli Base44. Les quatre premières sont fixées par la plateforme pour chaque appli qu’elle héberge. Les deux dernières sont celles qu’un propriétaire peut changer, et les deux notes D du relevé en viennent.","\u002Fblog\u002Fbase44-source-maps\u002Fwho-owns-each-line-1600x760.png",[25,311,313],{"id":312},"ce-que-vous-pouvez-changer-depuis-base44","Ce que vous pouvez changer depuis Base44",[10,315,316],{},"Deux en-têtes, vos règles de table et vos clés. Le reste est fixé pour chaque\nappli de la plateforme.",[10,318,319,320,323,324,327,328,331,332,335,336,339,340,343],{},"La documentation de Base44 liste ce que vous pouvez activer (lue le 16\nseptembre 2026). Dans le tableau de bord de votre appli, sous Security puis\nl’icône des réglages, vous pouvez activer deux en-têtes de sécurité. ",[17,321,322],{},"Prevent\nEmbedding"," pose ",[202,325,326],{},"X-Frame-Options",", qui empêche votre appli d’être affichée\ndans la page d’un autre site. ",[17,329,330],{},"Restrict Browser Features"," pose\n",[202,333,334],{},"Permissions-Policy",", qui limite ce que votre appli peut demander au\nnavigateur, caméra et position comprises. Si des gens se connectent à votre\nappli et peuvent faire quelque chose de lourd de conséquences en un clic,\nactivez le premier. La même page dit que ",[202,337,338],{},"Content-Security-Policy"," et\n",[202,341,342],{},"Strict-Transport-Security"," « are not configurable at the individual app\nlevel ». C’est l’essentiel du signalement sur les en-têtes, et il est hors de\nvos mains.",[10,345,346],{},"Le propre scan de Base44 couvre l’intérieur : problèmes de permissions sur les\ndonnées, secrets exposés, fonctions backend sans vérification de connexion,\ndépendances et, à partir de la formule Builder, vulnérabilités du code. Sa\ndocumentation ne mentionne ni les source maps ni l’en-tête CORS, ce qui est\nhonnête, puisque les deux appartiennent à la plateforme. Un scan externe couvre\nce qui est remis au navigateur d’un visiteur, et sur une appli Base44, c’est là\nque la liste est la plus courte.",[42,348,349,362],{},[45,350,351],{},[48,352,353,356,359],{},[51,354,355],{},"Ce que dit le rapport",[51,357,358],{},"Qui le fixe",[51,360,361],{},"Quoi faire",[70,363,364,375,385,396,409,419],{},[48,365,366,369,372],{},[75,367,368],{},"En-têtes de sécurité manquants",[75,370,371],{},"Base44, avec deux interrupteurs pour vous",[75,373,374],{},"Activer Prevent Embedding si des gens se connectent. Laisser le reste.",[48,376,377,380,382],{},[75,378,379],{},"API ouverte à n’importe quel site",[75,381,77],{},[75,383,384],{},"Rien. Regarder plutôt ce qui répond derrière.",[48,386,387,390,393],{},[75,388,389],{},"Code source original publié",[75,391,392],{},"Le script du badge de Base44",[75,394,395],{},"Rien. La map contient le code de Base44 pour le badge.",[48,397,398,401,406],{},[75,399,400],{},"Une adresse répond sans connexion",[75,402,403,404],{},"Base44, à ",[202,405,256],{},[75,407,408],{},"Lire ce qu’elle renvoie. Les réglages de consentement sont faits pour être publics.",[48,410,411,413,416],{},[75,412,65],{},[75,414,415],{},"Vous",[75,417,418],{},"Renouveler une clé secrète à sa source. Restreindre une clé Google.",[48,420,421,424,427],{},[75,422,423],{},"Une table lisible",[75,425,426],{},"Vous, si vous avez connecté votre propre base",[75,428,429],{},"Row Level Security sur chaque table qui contient des personnes.",[25,431,433],{"id":432},"quoi-faire-maintenant","Quoi faire maintenant",[435,436,437],"key-takeaways",{},[438,439,440,444,451,454,461,464],"ul",{},[441,442,443],"li",{},"Lisez les trois lignes de plateforme de votre rapport comme celles de Base44, puis lisez le reste.",[441,445,446,447,450],{},"Appuyez sur F12 dans votre appli en ligne et ouvrez l’onglet ",[17,448,449],{},"Sources",". Pas de dossier avec vos propres fichiers veut dire pas de map de votre code, quoi que dise le rapport.",[441,452,453],{},"Trouvez chaque clé dans l’appli et lisez son préfixe. Une clé secrète se renouvelle là où elle a été émise, puis se retire du code, dans cet ordre.",[441,455,456,457,460],{},"Activez ",[17,458,459],{},"Prevent Embedding"," sous Security si vos utilisateurs se connectent.",[441,462,463],{},"Ouvrez Data, choisissez une table, puis Permissions, et lisez la règle de chaque table qui contient des personnes.",[441,465,466],{},"Si vous avez connecté votre propre projet Supabase, activez Row Level Security sur chaque table qu’il contient et vérifiez qu’elle filtre vraiment.",[10,468,469],{},"Publier sur Base44, c’est un clic dans la barre du haut, et rien entre ce clic\net internet ne relit l’appli à la recherche d’une clé collée pour faire marcher\nune fonction. Un scan lancé le mois dernier décrit l’appli du mois dernier.",[10,471,472,476],{},[36,473,475],{"href":474},"\u002Fpricing","Reeve Monitor"," est construit pour cela. Il relance les neuf\nvérifications toutes les heures sur trois applis au plus, surveille la\ndisponibilité toutes les 60 secondes, vous prévient quand un résultat change au\nlieu d’attendre que vous alliez voir, et envoie un rapport mensuel. Il coûte\n€12 par mois au tarif de base, avec sept jours gratuits avant de vous\nfacturer ; la page des tarifs est parfois en dessous du chiffre donné ici et\njamais au-dessus. Monitor surveille et rien de plus, ce qui, pour une appli\nBase44, est la moitié qui convient : Care, notre formule de sauvegarde, ne\nsauvegarde que des projets Supabase, et une appli Base44 garde ses données dans\nBase44, sauf si vous avez connecté un projet à vous.",[10,478,479,480,483,484,488],{},"Le guide en langage clair pour cette plateforme est\n",[36,481,482],{"href":263},"Votre appli Base44 est-elle sûre ?",", et la\n",[36,485,487],{"href":486},"\u002Fchecklist","checklist de sécurité en 10 minutes"," couvre ce qui vaut la peine\nd’être vérifié sur toute appli fraîchement lancée, quel que soit l’outil qui\nl’a construite.",{"title":490,"searchDepth":491,"depth":491,"links":492},"",3,[493,495,496,497,498,499],{"id":27,"depth":494,"text":28},2,{"id":181,"depth":494,"text":182},{"id":231,"depth":494,"text":232},{"id":268,"depth":494,"text":269},{"id":312,"depth":494,"text":313},{"id":432,"depth":494,"text":433},"Bases de la sécurité","\u002Fblog\u002Fbase44-source-maps\u002Fcover-1200x630.png","Une appli Base44 avec le badge de la plateforme dans un coin, lue de l’extérieur en un rapport de trois lignes pâles et une en accent.","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.",false,"md",[507,510,513,516,519],{"q":508,"a":509},"Mon scan dit que mon appli Base44 publie son code source original. C’est vrai ?","Sur les applis Base44 que nous avons revérifiées en septembre 2026, non. La seule source map qui répondait appartenait au script du badge de Base44, et elle contient le code de Base44 pour ce badge. Vos propres fichiers sont partis compressés et sans map sur chaque appli que nous avons ouverte. La même ligne sur une appli d’un autre outil veut généralement dire ce qu’elle dit, et là, elle mérite d’être lue.",{"q":511,"a":512},"Puis-je désactiver le joker CORS sur une appli Base44 ?","Non. La documentation de Base44 indique que la configuration CORS par appli n’est pas disponible et que la plateforme la gère. Ce que vous décidez, c’est ce que les adresses de votre appli renvoient à une requête sans connexion, et c’est de toute façon là que l’en-tête compterait. Sur les applis Base44 que nous avons rouvertes, la seule adresse qui répondait sans connexion renvoyait des réglages de consentement aux cookies.",{"q":514,"a":515},"Base44 est-il moins sûr que Lovable ?","Un scan ne peut pas classer des outils, et ces deux-là n’ont pas la même forme. Une appli Base44 remonte plus de signalements, et presque tous sont des réglages de plateforme qui n’exposent rien de vous. Une appli Lovable parle directement à sa base Supabase, donc le réglage qui fait fuir le plus de données, une table sans règles par ligne, est à la portée d’un créateur Lovable et pas d’un créateur Base44. Deux notes D sur 5 438 applis Base44 contre 407 sur 18 554 applis Lovable, c’est cette différence en chiffres. Cela ne dit rien de votre appli tant que vous ne l’avez pas scannée.",{"q":517,"a":518},"Que puis-je changer depuis Base44 ?","Deux en-têtes de sécurité (Prevent Embedding et Restrict Browser Features, sous Security dans le tableau de bord de votre appli), les règles de permission de chaque table, quelles fonctions backend exigent un utilisateur connecté, et quelles clés vous collez dans l’appli. CORS, Content-Security-Policy et Strict-Transport-Security sont fixés par la plateforme pour chaque appli, et la documentation de Base44 le dit.",{"q":520,"a":521},"Une source map publique expose-t-elle mes clés d’API ?","Une map expose du code, et une clé qui se trouve dans le code était déjà dans le fichier compressé que chaque visiteur télécharge. Sur une appli Base44, la seule map que nous avons trouvée appartient au badge, donc la vraie question est de savoir si une clé est dans votre bundle tout court. Notre scan lit le bundle pour cela, séparément. Sur les applis Base44, les clés qu’il trouve sont presque toujours des clés d’API Google, qui demandent généralement une restriction dans Google Cloud, et pas de rotation.","\u002Fblog\u002Fbase44-source-maps\u002Fcard-800x500.png",[524,525,526,527,528,529,530],"sécurité base44","base44 est-il sûr","base44 source maps","sécurité appli base44","base44 cors","base44 vs lovable sécurité","base44 security",{},true,"\u002Fblog\u002Fbase44-source-maps","2026-09-17",{"title":5,"description":503},"blog\u002Fbase44-source-maps",[538,539,540],"La sécurité Base44 est surtout décidée par la plateforme. Un scan d’une appli Base44 remonte les trois mêmes signalements sur presque chacune : des en-têtes manquants, un en-tête CORS joker et une source map publiée.","Le 16 septembre 2026, nous sommes retournés lire ce que contiennent ces source maps. Chacune de celles qui répondaient appartenait au script du badge de Base44. Le code du propriétaire est parti sans map sur chaque appli que nous avons ouverte.","Ce qui dépend de vous est court : toute clé collée dans l’appli (trouvée sur 2 % des applis Base44), les règles de permission sur vos tables, et tout ce que vous avez connecté vous-même. Les deux notes D sur 5 438 applis viennent de cette liste.","T_DV5izY6PH2FfM7bSV_8oaJA_29CxtZHLLbtU6mrNc",[543,550,556,562,568,574,580,581,587,593,599,605,611,617,623,629,635,641,647,653,659,665,671,677,683,689,695,701,707,712,718,724,730,735,741,747,751,757,763,769,774,780],{"path":544,"title":545,"description":546,"published":547,"category":548,"image":549,"draft":504},"\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":551,"title":552,"description":553,"published":554,"category":500,"image":555,"draft":504},"\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":557,"title":558,"description":559,"published":560,"category":500,"image":561,"draft":504},"\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":563,"title":564,"description":565,"published":566,"category":500,"image":567,"draft":504},"\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":569,"title":570,"description":571,"published":572,"category":500,"image":573,"draft":504},"\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":575,"title":576,"description":577,"published":578,"category":500,"image":579,"draft":504},"\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":533,"title":5,"description":503,"published":534,"category":500,"image":522,"draft":504},{"path":582,"title":583,"description":584,"published":585,"category":500,"image":586,"draft":504},"\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":588,"title":589,"description":590,"published":591,"category":500,"image":592,"draft":504},"\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":594,"title":595,"description":596,"published":597,"category":548,"image":598,"draft":504},"\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":600,"title":601,"description":602,"published":603,"category":548,"image":604,"draft":504},"\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":606,"title":607,"description":608,"published":609,"category":548,"image":610,"draft":504},"\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":612,"title":613,"description":614,"published":615,"category":500,"image":616,"draft":504},"\u002Fblog\u002Fsafest-ai-app-builder","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":618,"title":619,"description":620,"published":621,"category":500,"image":622,"draft":504},"\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":624,"title":625,"description":626,"published":627,"category":500,"image":628,"draft":504},"\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":630,"title":631,"description":632,"published":633,"category":500,"image":634,"draft":504},"\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":636,"title":637,"description":638,"published":639,"category":500,"image":640,"draft":504},"\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":642,"title":643,"description":644,"published":645,"category":500,"image":646,"draft":504},"\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":648,"title":649,"description":650,"published":651,"category":500,"image":652,"draft":504},"\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":654,"title":655,"description":656,"published":657,"category":500,"image":658,"draft":504},"\u002Fblog\u002Fmissing-security-headers","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":660,"title":661,"description":662,"published":663,"category":500,"image":664,"draft":504},"\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":666,"title":667,"description":668,"published":669,"category":500,"image":670,"draft":504},"\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":672,"title":673,"description":674,"published":675,"category":548,"image":676,"draft":504},"\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":678,"title":679,"description":680,"published":681,"category":500,"image":682,"draft":504},"\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":684,"title":685,"description":686,"published":687,"category":548,"image":688,"draft":504},"\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":690,"title":691,"description":692,"published":693,"category":500,"image":694,"draft":504},"\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":696,"title":697,"description":698,"published":699,"category":500,"image":700,"draft":504},"\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":702,"title":703,"description":704,"published":705,"category":500,"image":706,"draft":504},"\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":248,"title":708,"description":709,"published":710,"category":500,"image":711,"draft":504},"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":713,"title":714,"description":715,"published":716,"category":548,"image":717,"draft":504},"\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":719,"title":720,"description":721,"published":722,"category":548,"image":723,"draft":504},"\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":725,"title":726,"description":727,"published":728,"category":500,"image":729,"draft":504},"\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":281,"title":731,"description":732,"published":733,"category":500,"image":734,"draft":504},"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":736,"title":737,"description":738,"published":739,"category":548,"image":740,"draft":504},"\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":742,"title":743,"description":744,"published":745,"category":500,"image":746,"draft":504},"\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":195,"title":748,"description":749,"published":745,"category":500,"image":750,"draft":504},"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":752,"title":753,"description":754,"published":755,"category":500,"image":756,"draft":504},"\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":758,"title":759,"description":760,"published":761,"category":548,"image":762,"draft":504},"\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":764,"title":765,"description":766,"published":767,"category":500,"image":768,"draft":504},"\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":770,"title":771,"description":772,"published":767,"category":548,"image":773,"draft":504},"\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":775,"title":776,"description":777,"published":778,"category":548,"image":779,"draft":504},"\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":286,"title":781,"description":782,"published":778,"category":500,"image":783,"draft":504},"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",1790150953869]