[{"data":1,"prerenderedAt":865},["ShallowReactive",2],{"blog-fr-lovable-security-scan":3,"blog-index-fr":518},{"id":4,"title":5,"body":6,"category":474,"cover":475,"coverAlt":476,"description":477,"draft":478,"extension":479,"faq":480,"image":495,"keywords":496,"meta":506,"navigation":507,"ogTitle":508,"path":509,"published":510,"seo":511,"stem":512,"tldr":513,"updated":510,"__hash__":517},"blog_fr\u002Fblog\u002Flovable-security-scan.md","Scan de sécurité Lovable : ce qu’il ne peut pas prouver",{"type":7,"value":8,"toc":460},"minimark",[9,13,21,26,29,40,55,61,65,68,71,86,89,93,96,99,102,114,118,121,124,130,137,141,144,147,165,172,177,188,191,199,203,206,225,228,330,337,341,344,372,375,380,391,395,398,401,408,420,424,452],[10,11,12],"p",{},"Vous cliquez sur Publish dans votre application Lovable et un scan se lance\navant qu’elle ne sorte. Quelques secondes plus tard il revient propre, ou il\nrevient avec une liste, et dans les deux cas vous tenez un résultat que vous\nn’avez aucun moyen de juger. C’est tout ? Est-ce que ça suffit pour y mettre de\nvraies personnes ?",[10,14,15,16,20],{},"Et voici ce qu’il faut savoir avant de trancher : ",[17,18,19],"strong",{},"le scan de sécurité Lovable\net un scan de votre application publiée lisent deux objets différents."," L’un\nlit les serrures et le câblage. L’autre s’approche et abaisse la poignée. Les\ndeux valent la peine, et seul le second fait ce que fait chaque visiteur de\nvotre application à longueur de journée.",[22,23,25],"h2",{"id":24},"lovable-analyse-t-il-mon-application-pour-trouver-des-problèmes-de-sécurité","Lovable analyse-t-il mon application pour trouver des problèmes de sécurité ?",[10,27,28],{},"Oui, et il y en a deux. Les deux sont gratuits.",[10,30,31,32,35,36,39],{},"Le ",[17,33,34],{},"Quick scan"," part tout seul à chaque publication et se termine en quelques\nsecondes. Le ",[17,37,38],{},"Deep scan"," lit tout le code de votre application et c’est vous\nqui le lancez. Les deux lisent votre projet de l’intérieur : les réglages de\nvotre base, les règles d’accès sur vos tables, votre arbre de dépendances, votre\ncode.",[10,41,42,43,50,51,54],{},"Tout ce qui suit a été lu dans\n",[44,45,49],"a",{"href":46,"rel":47},"https:\u002F\u002Fdocs.lovable.dev\u002Ffeatures\u002Fsecurity",[48],"nofollow","la documentation de sécurité de Lovable","\nle ",[17,52,53],{},"24 septembre 2026",". Cette fonctionnalité a changé plus d’une fois en un\nan, donc regardez la date de tout article qui la décrit, celui-ci compris.",[56,57],"diagram",{"alt":58,"caption":59,"src":60},"Deux panneaux. Dans celui de gauche, une boîte contient sur une rangée une base de données, un document, un signe de code et une pile de lignes, et en dessous une grande loupe se tient à l’intérieur de la boîte. Dans celui de droite, une page publiée envoie une flèche vers une base de données située en dehors d’elle, trois visiteurs attendent de l’autre côté, et une loupe de même taille se tient en plein air au milieu d’eux.","Deux scans, deux endroits où se placer. Celui qui est dans la boîte peut ouvrir n’importe quoi dans le projet. Celui qui est dans la rue ne peut que demander à l’application ce qu’elle rend, ce que font exactement les trois personnes à côté de lui.","\u002Fblog\u002Flovable-security-scan\u002Ftwo-vantage-points-1600x700.png",[22,62,64],{"id":63},"ce-que-vérifie-le-scan-de-sécurité-lovable","Ce que vérifie le scan de sécurité Lovable",[10,66,67],{},"Trois domaines, sous forme d’un jeu fixe de vérifications, en quelques secondes,\nà chaque publication.",[10,69,70],{},"La documentation de Lovable les appelle revue de la base de données, audit des\ndépendances et vérification de serveur MCP. La revue de la base est celle qui\ncompte pour cet article, et sa description mérite une lecture lente : elle\ncouvre les tables sans contrôle d’accès par enregistrement, c’est-à-dire sans\nRow Level Security, ainsi que les règles d’accès qui laissent tout le monde\npasser et la protection contre les mots de passe fuités désactivée. L’audit des\ndépendances cherche les vulnérabilités connues dans vos paquets npm. La\nvérification MCP cherche un serveur MCP que votre application expose sans\nauthentification.",[10,72,73,74,77,78,81,82,85],{},"Les résultats reviennent groupés par domaine et étiquetés ",[17,75,76],{},"Critical",",\n",[17,79,80],{},"Warning"," ou ",[17,83,84],{},"Info",". Le scan se déclenche automatiquement depuis la boîte de\ndialogue de publication, et vous pouvez aussi le lancer depuis la vue Security\ndu projet.",[10,87,88],{},"Certains articles appellent cela le Basic scan. Le bouton de la vue Security\naffiche aujourd’hui Run quick scan, donc si un article et votre écran ne sont\npas d’accord sur le nom, c’est votre écran qui est à jour.",[22,90,92],{"id":91},"ce-que-le-deep-scan-ajoute","Ce que le Deep scan ajoute",[10,94,95],{},"Il lit tout le code de votre application, et il ne se lance pas tout seul.",[10,97,98],{},"Le Deep scan reprend tout le Quick scan puis regarde votre propre logique, vos\npermissions et vos données. Lovable liste sept domaines : contrôle d’accès et\nautorisation, endpoints non authentifiés et détournables, entrées non sûres et\ninjection, secrets et identifiants fuités, paiements et facturation,\nauthentification et sécurité des comptes, et données personnelles et sensibles\nexposées. Il est gratuit lui aussi.",[10,100,101],{},"La phrase de la documentation sur laquelle il faut vraiment agir est celle-ci :\nle Deep scan ne se lance pas automatiquement pendant que vous travaillez. Il se\nlance quand vous le lancez. Un projet où aucun n’a jamais tourné n’a jamais eu\nson code lu, quel que soit le nombre de publications, et la boîte de dialogue ne\nvous le dira pas. Les espaces de travail Enterprise peuvent planifier des Deep\nscans sur des projets choisis depuis le Workspace Security center, et c’est la\nseule configuration où cela arrive sans que quelqu’un y pense.",[10,103,104,105,108,109,113],{},"Lovable peut aussi tenter des corrections, pendant que vous construisez ou via\n",[17,106,107],{},"Try to fix all"," dans la vue Security. Lisez ce qu’une correction a changé\navant de l’accepter. La réparation qui fait disparaître une erreur de row level\nsecurity est très souvent une policy qui laisse tout le monde passer, et cette\npolicy\n",[44,110,112],{"href":111},"\u002Fblog\u002Fsupabase-rls-on-but-table-still-public","satisfait la vérification en laissant la table ouverte",".",[22,115,117],{"id":116},"la-critique-de-2025-et-ce-qui-a-changé","La critique de 2025, et ce qui a changé",[10,119,120],{},"La première version de cette vérification vous disait qu’une policy existait.\nElle ne vous disait pas si la policy fonctionnait, et le chercheur qui a trouvé\nle problème d’origine l’a écrit lui-même à l’époque.",[10,122,123],{},"En mai 2025, Matt Palmer a publié CVE-2025-48757, au sujet d’applications\nLovable dont les tables Supabase avaient un row level security absent ou écrit\ntrop largement. La réponse de Lovable a été la vérification avant publication.\nLe texte de Palmer décrivait sa limite dans une parenthèse :",[125,126,127],"blockquote",{},[10,128,129],{},"La fonctionnalité Publish de Lovable aide à s’assurer que les policies RLS\nsont activées sur toutes les tables et signale quand elles ne le sont pas\n(mais n’indique pas nécessairement si elles sont suffisantes).",[10,131,132,133,113],{},"Cet écart a une réponse dans la documentation actuelle, qui nomme les règles\nd’accès qui laissent tout le monde passer parmi ce que la revue de la base\nsignale. Rien dans cet article ne met cette affirmation à l’épreuve. Si vous\nvoulez la tester, créez une table jetable avec une policy qui laisse tout le\nmonde passer et regardez si le scan la nomme. La version longue du CVE est dans\n",[44,134,136],{"href":135},"\u002Fblog\u002Fis-lovable-safe","Lovable est-il sûr",[22,138,140],{"id":139},"ce-quun-scan-de-lintérieur-ne-peut-pas-prouver","Ce qu’un scan de l’intérieur ne peut pas prouver",[10,142,143],{},"Si votre application en ligne rend des lignes à quelqu’un qui n’est pas\nconnecté.",[10,145,146],{},"Une serrure peut être posée, inventoriée et correcte sur le plan, et la porte\ns’ouvrir quand même. Une policy est une déclaration de ce qui devrait se passer ;\nce qui tranche ce qui se passe, c’est une requête. Trois façons pour une règle\nde figurer comme présente pendant que la table répond quand même :",[148,149,150,159,162],"ul",{},[151,152,153,154,158],"li",{},"La policy laisse tout le monde passer. Écrite ",[155,156,157],"code",{},"using (true)",", c’est une policy\nvalide, elle satisfait l’exigence qu’il en existe une, et elle renvoie toutes\nles lignes à tout appelant.",[151,160,161],{},"La policy couvre la lecture et rien d’autre. Le select est vérifié, l’insert,\nl’update et le delete n’ont jamais été écrits, donc n’importe qui peut écrire\ndans une table que personne ne peut lire entièrement.",[151,163,164],{},"La condition correspond à plus de monde que prévu. Elle devait nommer un seul\nclient et elle nomme chaque visiteur connecté, ou chaque visiteur.",[10,166,167,168,171],{},"Maintenant la partie qui décide comment lire un résultat vert. ",[17,169,170],{},"Vu de dehors,\nces trois cas et une table sans aucune protection donnent la même réponse",",\nc’est-à-dire des lignes. Vos utilisateurs ne les distinguent pas. Personne\nd’autre ouvrant votre application non plus.",[56,173],{"alt":174,"caption":175,"src":176},"Une chaîne de gauche à droite : une personne, une flèche vers une page publiée, une flèche vers une base de données et une flèche rouge vers un panneau de trois lignes de données. Aucune clé ni aucun cadenas n’apparaît le long de la ligne. Sous la page, dessinée en pâle et reliée à rien, se trouve une boîte de projet contenant une base de données, un document, un signe de code et une pile de lignes.","La requête qui tranche, et les lignes avec lesquelles elle est revenue. Le projet est sous la page et ne touche la ligne nulle part, et c’est pour cela que rien de ce qu’il contient ne peut répondre de ce qui s’est passé ici.","\u002Fblog\u002Flovable-security-scan\u002Fthe-request-that-decides-1600x560.png",[10,178,179,180,183,184,113],{},"Entre le 12 et le 14 août 2026 nous avons passé les mêmes neuf vérifications\nexternes sur 30 998 applications en ligne, et 18 554 d’entre elles étaient\npubliées sur Lovable. Parmi les applications Lovable qui nommaient un projet\nSupabase, 3 553 nous ont répondu assez clairement pour être jugées, et ",[17,181,182],{},"2 017\nd’entre elles ont rendu des lignes à une requête ne portant aucune session",". La\nméthode et chaque dénominateur sont\n",[44,185,187],{"href":186},"\u002Fresearch\u002Fvibe-coded-app-security-2026","dans le rapport",[10,189,190],{},"Une mise au point honnête sur ce chiffre. Nous étions sur le trottoir, et nous\nn’avons aucune vue à l’intérieur de ces projets. Nous pouvons rapporter ce\nqu’ont répondu 2 017 applications publiées. Nous ne pouvons pas rapporter\ncombien d’entre elles avaient lancé un scan, ni ce qu’il leur avait dit.",[10,192,193,194,198],{},"Votre propre application répond à la même question en une vingtaine de secondes,\net vous n’avez pas à nous croire sur le côté des 2 017 où elle tombe :\n",[44,195,197],{"href":196},"\u002Fsecurity-scanner","scanner votre application",". Le scan demande à chaque table\nle nombre de lignes qu’un appelant sans session recevrait, lit le nombre et\ns’arrête là, sans récupérer une seule ligne.",[22,200,202],{"id":201},"ce-quun-scan-de-lextérieur-ne-peut-pas-voir","Ce qu’un scan de l’extérieur ne peut pas voir",[10,204,205],{},"Abaisser la poignée ne vous apprend rien sur une pièce sans porte sur la rue, et\nil y en a quatre.",[10,207,208,209,212,213,216,217,220,221,224],{},"Votre ",[17,210,211],{},"arbre de dépendances npm"," n’est pas dans la page que télécharge un\nnavigateur. Votre ",[17,214,215],{},"code serveur",", y compris les edge functions et la question\nde savoir si une route vérifie qui appelle, tourne à un endroit que nous\nn’atteignons jamais. Une ",[17,218,219],{},"table que votre front-end ne nomme jamais"," nous est\ninvisible, parce que nous trouvons les noms de tables dans le code que votre\napplication livre, plus une courte liste de noms courants : une table que rien\ndans le navigateur ne touche et que personne ne devinerait n’est donc pas\ninterrogée. Et un ",[17,222,223],{},"serveur MCP"," n’est pas quelque chose qu’une requête de page\ntrouve.",[10,226,227],{},"Les deux scans de Lovable lisent à eux deux les quatre. Le nôtre écrit\n« Vérification impossible » quand il n’a pas pu répondre à une question, plutôt\nqu’une coche.",[229,230,231,247],"table",{},[232,233,234],"thead",{},[235,236,237,241,244],"tr",{},[238,239,240],"th",{},"De quoi il s’agit",[238,242,243],{},"Scan Lovable, intérieur",[238,245,246],{},"Un scan de l’extérieur",[248,249,250,262,273,284,293,302,311,320],"tbody",{},[235,251,252,256,259],{},[253,254,255],"td",{},"Row level security désactivé sur une table",[253,257,258],{},"Oui",[253,260,261],{},"Seulement par l’effet",[235,263,264,267,270],{},[253,265,266],{},"Une policy qui laisse tout le monde passer",[253,268,269],{},"Oui, d’après sa doc",[253,271,272],{},"Oui, par les lignes",[235,274,275,278,281],{},[253,276,277],{},"Ce que votre application publiée rend à un inconnu",[253,279,280],{},"Non",[253,282,283],{},"Oui, c’est tout le job",[235,285,286,289,291],{},[253,287,288],{},"Vos dépendances npm",[253,290,258],{},[253,292,280],{},[235,294,295,298,300],{},[253,296,297],{},"Code serveur et authentification des edge functions",[253,299,258],{},[253,301,280],{},[235,303,304,307,309],{},[253,305,306],{},"Une table que votre front-end ne nomme jamais",[253,308,258],{},[253,310,280],{},[235,312,313,316,318],{},[253,314,315],{},"Quelle clé a fini dans le code que les visiteurs chargent",[253,317,258],{},[253,319,258],{},[235,321,322,325,328],{},[253,323,324],{},"Date du certificat, date du domaine et en-têtes de page",[253,326,327],{},"Pas dans sa liste",[253,329,258],{},[10,331,332,333,113],{},"La ligne sur ce que votre application publiée rend à un inconnu est la raison de\nlancer les deux, et c’est autour d’elle que notre scan est construit. La version\ngénérale de l’endroit où s’arrête la vue de l’extérieur est dans\n",[44,334,336],{"href":335},"\u002Fblog\u002Fvibe-coding-security-scanner","ce qu’un scan par URL manque",[22,338,340],{"id":339},"les-deux-et-dans-cet-ordre","Les deux, et dans cet ordre",[10,342,343],{},"Le scan de l’intérieur avant de publier, celui de l’extérieur après, parce que\nc’est l’ordre dans lequel les deux choses se produisent.",[345,346,347,353,359,364],"ol",{},[151,348,349,352],{},[17,350,351],{},"Laissez le Quick scan tourner à la publication, puis lisez-le."," C’est\nquelques secondes, et cela arrive de toute façon. Passer la boîte de dialogue\nsans la lire est la manière la plus courante pour un résultat Critical\nd’atteindre la production.",[151,354,355,358],{},[17,356,357],{},"Lancez un Deep scan avant que quoi que ce soit de réel parte en ligne",", et\nde nouveau après avoir ajouté la connexion, les paiements ou une table\ncontenant des personnes. Il ne partira pas tout seul.",[151,360,361],{},[17,362,363],{},"Publiez.",[151,365,366,369,370,113],{},[17,367,368],{},"Scannez l’adresse publiée depuis l’extérieur."," Le nôtre lit votre\napplication en ligne comme le ferait un visiteur, prend une vingtaine de\nsecondes, ne demande aucun compte, et nomme les vérifications qu’il n’a pas\npu terminer : ",[44,371,197],{"href":196},[10,373,374],{},"Il y a un trou dans cette séquence, et c’est celui avec lequel il faut compter.\nLe Quick scan tourne quand vous publiez. La plupart de ce qui ouvre une table ne\npasse pas du tout par la publication : vous changez un réglage dans le tableau\nde bord Supabase, vous acceptez à minuit une policy qu’un assistant a écrite\ndans une fenêtre de chat, vous créez une table ce matin et l’écran qui la lit\npart jeudi. Rien de tout cela n’est une publication, donc rien de tout cela ne\nlance un scan, et le Deep scan n’allait de toute façon jamais partir tout seul.",[56,376],{"alt":377,"caption":378,"src":379},"Une frise horizontale avec trois points turquoise, chacun relié vers le haut à une loupe dans un cercle. Entre le deuxième et le troisième se trouve un point ambre relié vers le bas à un interrupteur de réglage, et à partir de là la frise devient ambre jusqu’au bout, passant droit sous la troisième loupe.","Chaque publication lance un scan. Un réglage changé dans le tableau de bord Supabase n’est pas une publication, et l’ambre continue au-delà de la suivante, parce que ce scan lit le projet et non la table.","\u002Fblog\u002Flovable-security-scan\u002Fwhen-each-one-runs-1600x600.png",[10,381,382,386,387,390],{},[44,383,385],{"href":384},"\u002Fpricing","Reeve Monitor"," assure la moitié extérieure les jours où vous n’y\npensez pas. Il repasse les neuf vérifications toutes les heures sur trois\napplications au plus, surveille si votre application répond seulement, vous dit\nquand un résultat ",[17,388,389],{},"change"," au lieu d’attendre que vous veniez regarder, et\nenvoie un rapport à la fin de chaque mois.",[22,392,394],{"id":393},"lire-un-résultat-vert","Lire un résultat vert",[10,396,397],{},"Un résultat propre veut dire que toutes les questions que ce scan pouvait poser\nsont revenues propres le jour où vous l’avez lancé. Cela vaut quelque chose, et\nce n’est pas un verdict sur votre application.",[10,399,400],{},"Lovable met la même réserve dans sa propre documentation : les outils aident à\nrepérer les problèmes de sécurité courants et ne peuvent pas garantir une\nsécurité complète. Le nôtre la porte aussi, parce qu’une vérification externe\nautomatique n’est pas un audit et qu’une liste de résultats vide n’est pas une\ngarantie.",[10,402,403,404,407],{},"La seule règle à garder pour le cas où les deux se contredisent : ",[17,405,406],{},"si le scan\nde l’intérieur est propre et qu’un scan de l’extérieur dit qu’une table a\nrépondu à une requête sans session, agissez sur la réponse de l’extérieur.","\nC’est la réponse que reçoivent vos utilisateurs, et c’est celle que reçoit\nn’importe qui d’autre. Allez lire la policy de cette table.",[10,409,410,411,415,416,113],{},"Si votre application tourne sur Supabase, le guide en langage clair pour cette\nplateforme est\n",[44,412,414],{"href":413},"\u002Fis-your-lovable-app-safe","votre application Lovable est-elle sûre",", et les\nvérifications écrites sous forme de commandes à lancer vous-même sont dans\n",[44,417,419],{"href":418},"\u002Fblog\u002Fsupabase-security-checker","le vérificateur de sécurité Supabase",[22,421,423],{"id":422},"ce-quil-faut-faire-cette-semaine","Ce qu’il faut faire cette semaine",[425,426,427],"key-takeaways",{},[148,428,429,432,435,438,441,449],{},[151,430,431],{},"Lisez le résultat du Quick scan à la publication au lieu de le passer, et traitez une étiquette Critical comme quelque chose à corriger avant que l’application ne sorte.",[151,433,434],{},"Lancez un Deep scan à la main. Il ne démarre pas tout seul, donc un projet où aucun n’a jamais tourné n’a jamais eu son code lu.",[151,436,437],{},"Après avoir publié, scannez l’adresse en ligne depuis l’extérieur. C’est la seule vérification qui fait la requête que fait un inconnu.",[151,439,440],{},"Lisez la policy de chaque table contenant des personnes. Une policy qui laisse tout le monde passer laisse la table ouverte pendant que le tableau de bord la donne pour protégée.",[151,442,443,444,448],{},"Vérifiez que la clé présente dans votre application est la clé publiable. ",[44,445,447],{"href":446},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","Quelles clés d’API sont sûres dans votre front-end"," explique comment distinguer les deux.",[151,450,451],{},"Quand les réponses de l’intérieur et de l’extérieur se contredisent, vos utilisateurs reçoivent celle de l’extérieur.",[10,453,454,455,459],{},"Si votre application Lovable utilise Supabase, ouvrez une fenêtre de navigation\nprivée et parcourez la liste sous Authentication et Policies avant vendredi.\n",[44,456,458],{"href":457},"\u002Fblog\u002Fcan-anyone-read-your-supabase-database","N’importe qui peut-il lire votre base Supabase","\nest le même test écrit sous forme de commandes à coller dans un terminal.",{"title":461,"searchDepth":462,"depth":462,"links":463},"",3,[464,466,467,468,469,470,471,472,473],{"id":24,"depth":465,"text":25},2,{"id":63,"depth":465,"text":64},{"id":91,"depth":465,"text":92},{"id":116,"depth":465,"text":117},{"id":139,"depth":465,"text":140},{"id":201,"depth":465,"text":202},{"id":339,"depth":465,"text":340},{"id":393,"depth":465,"text":394},{"id":422,"depth":465,"text":423},"Bases de la sécurité","\u002Fblog\u002Flovable-security-scan\u002Fcover-1200x630.png","Un panneau de rapport portant une colonne de coches et, derrière lui, sortant du cadre, une base de données d’où s’échappent des lignes.","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.",false,"md",[481,483,486,489,492],{"q":25,"a":482},"Oui, et il y a deux scans. Le Quick scan part tout seul à chaque publication et se termine en quelques secondes ; il couvre les règles d’accès de votre base, vos dépendances npm et tout serveur MCP que votre application expose sans authentification. Le Deep scan lit tout le code de votre application et c’est à vous de le lancer depuis la vue Security du projet. Les deux sont gratuits, et les deux lisent votre projet plutôt que votre application publiée.",{"q":484,"a":485},"Quelle est la différence entre le Quick scan et le Deep scan ?","La vitesse et la profondeur. Le Quick scan exécute un jeu fixe de vérifications en quelques secondes, automatiquement à la publication, et couvre les réglages de votre base, vos dépendances et l’exposition MCP. Le Deep scan reprend tout le Quick scan puis lit le code de votre application à la recherche de problèmes propres à votre logique et à vos données : contrôle d’accès, endpoints non authentifiés, injection, secrets fuités, paiements, sécurité des comptes et données personnelles exposées. Le Deep scan ne part pas tout seul pendant que vous travaillez, donc un projet où aucun n’a jamais été lancé n’a jamais eu son code lu.",{"q":487,"a":488},"Le scan de sécurité Lovable suffit-il ?","C’est une vraie vérification et il voit des choses qu’aucun outil externe ne peut voir, comme votre arbre de dépendances et une table que votre front-end ne nomme jamais. Ce qu’il ne peut pas faire, c’est la requête que font vos visiteurs. Une policy peut exister, sembler valide et malgré tout renvoyer toutes les lignes, et la seule chose qui tranche, c’est d’interroger votre application publiée depuis l’extérieur sans session. Lovable le dit dans sa propre documentation : les outils aident à repérer les problèmes de sécurité courants et ne peuvent pas garantir une sécurité complète.",{"q":490,"a":491},"Pourquoi un scanner externe trouve-t-il des choses que le scan de Lovable a laissées passer ?","Parce que les deux lisent des objets différents. Un scan de l’intérieur lit votre projet : le schéma, les policies, l’arbre de dépendances, le code. Un scan de l’extérieur lit ce que l’application publiée rend à un inconnu sans session. Vu de dehors, une table sans aucune protection et une table dotée d’une policy qui laisse tout le monde passer donnent la même réponse, c’est-à-dire des lignes. C’est cette réponse que reçoivent vos utilisateurs et tous les autres, donc quand les deux se contredisent c’est celle sur laquelle agir.",{"q":493,"a":494},"Ai-je besoin des deux ?","Ils répondent à des questions différentes, donc lancer l’un ne remplace pas l’autre. Le bon ordre est l’ordre dans lequel les deux choses se produisent : laissez le Quick scan tourner à la publication, lancez un Deep scan avant que quoi que ce soit de réel parte en ligne et après avoir ajouté la connexion, les paiements ou une table contenant des personnes, puis scannez l’adresse publiée depuis l’extérieur. Un scan de l’extérieur prend une vingtaine de secondes et ne demande aucun compte.","\u002Fblog\u002Flovable-security-scan\u002Fcard-800x500.png",[497,498,499,500,501,502,503,504,505],"scan de sécurité lovable","lovable security scan","lovable deep scan","lovable quick scan","lovable vérifie la sécurité","lovable rls","vérification lovable avant publication","audit de sécurité lovable","le scan lovable suffit-il",{},true,"Scan de sécurité Lovable : ce qu’il ne prouve pas","\u002Fblog\u002Flovable-security-scan","2026-09-24",{"title":5,"description":477},"blog\u002Flovable-security-scan",[514,515,516],"Le scan de sécurité Lovable, ce sont en fait deux scans, tous les deux gratuits : un Quick scan qui part tout seul à chaque publication, et un Deep scan que vous lancez vous-même et qui lit tout le code de votre application.","Les deux lisent votre projet de l’intérieur. Aucun des deux ne fait la requête que fait un inconnu, donc aucun ne peut prouver ce que votre application publiée rend.","Sur les 3 553 applications Lovable dont nous avons pu interroger la base Supabase depuis l’extérieur, 2 017 ont répondu à une requête sans session. Lancez le scan de l’intérieur avant de publier et un scan de l’extérieur après.","iO-i1XoXSRXUQp60_50ZsNDvqrpl_WOicp2andPZnX0",[519,525,531,537,543,549,555,561,567,573,579,585,591,598,604,610,615,621,622,628,634,639,645,651,657,663,669,675,681,687,693,699,705,711,717,723,728,733,739,745,751,757,763,769,775,781,787,793,799,805,811,817,823,828,833,839,845,850,855,861],{"path":520,"title":521,"description":522,"published":523,"category":474,"image":524,"draft":478},"\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":526,"title":527,"description":528,"published":529,"category":474,"image":530,"draft":478},"\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":532,"title":533,"description":534,"published":535,"category":474,"image":536,"draft":478},"\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":538,"title":539,"description":540,"published":541,"category":474,"image":542,"draft":478},"\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":544,"title":545,"description":546,"published":547,"category":474,"image":548,"draft":478},"\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":550,"title":551,"description":552,"published":553,"category":474,"image":554,"draft":478},"\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":556,"title":557,"description":558,"published":559,"category":474,"image":560,"draft":478},"\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":562,"title":563,"description":564,"published":565,"category":474,"image":566,"draft":478},"\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":568,"title":569,"description":570,"published":571,"category":474,"image":572,"draft":478},"\u002Fblog\u002Fis-bolt-safe","Bolt est-il sûr ? Ce que 1 123 applications Bolt ont montré","Bolt est-il sûr ? Neuf vérifications sur 1 123 applications Bolt en ligne. L’hébergement était propre. Les trouvailles : des clés et des tables ouvertes.","2026-10-02","\u002Fblog\u002Fis-bolt-safe\u002Fcard-800x500.png",{"path":574,"title":575,"description":576,"published":577,"category":474,"image":578,"draft":478},"\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":580,"title":581,"description":582,"published":583,"category":474,"image":584,"draft":478},"\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":586,"title":587,"description":588,"published":589,"category":474,"image":590,"draft":478},"\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":592,"title":593,"description":594,"published":595,"category":596,"image":597,"draft":478},"\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":599,"title":600,"description":601,"published":602,"category":596,"image":603,"draft":478},"\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":605,"title":606,"description":607,"published":608,"category":596,"image":609,"draft":478},"\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":611,"title":612,"description":613,"published":608,"category":474,"image":614,"draft":478},"\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":616,"title":617,"description":618,"published":619,"category":474,"image":620,"draft":478},"\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":509,"title":5,"description":477,"published":510,"category":474,"image":495,"draft":478},{"path":623,"title":624,"description":625,"published":626,"category":596,"image":627,"draft":478},"\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":629,"title":630,"description":631,"published":632,"category":474,"image":633,"draft":478},"\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":135,"title":635,"description":636,"published":637,"category":474,"image":638,"draft":478},"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":640,"title":641,"description":642,"published":643,"category":474,"image":644,"draft":478},"\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":646,"title":647,"description":648,"published":649,"category":474,"image":650,"draft":478},"\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":652,"title":653,"description":654,"published":655,"category":474,"image":656,"draft":478},"\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":658,"title":659,"description":660,"published":661,"category":474,"image":662,"draft":478},"\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":664,"title":665,"description":666,"published":667,"category":474,"image":668,"draft":478},"\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":670,"title":671,"description":672,"published":673,"category":474,"image":674,"draft":478},"\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":676,"title":677,"description":678,"published":679,"category":596,"image":680,"draft":478},"\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":682,"title":683,"description":684,"published":685,"category":596,"image":686,"draft":478},"\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":688,"title":689,"description":690,"published":691,"category":596,"image":692,"draft":478},"\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":694,"title":695,"description":696,"published":697,"category":474,"image":698,"draft":478},"\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":700,"title":701,"description":702,"published":703,"category":474,"image":704,"draft":478},"\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":706,"title":707,"description":708,"published":709,"category":474,"image":710,"draft":478},"\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":712,"title":713,"description":714,"published":715,"category":474,"image":716,"draft":478},"\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":718,"title":719,"description":720,"published":721,"category":474,"image":722,"draft":478},"\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":418,"title":724,"description":725,"published":726,"category":474,"image":727,"draft":478},"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":335,"title":729,"description":730,"published":731,"category":474,"image":732,"draft":478},"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":734,"title":735,"description":736,"published":737,"category":474,"image":738,"draft":478},"\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":740,"title":741,"description":742,"published":743,"category":474,"image":744,"draft":478},"\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":746,"title":747,"description":748,"published":749,"category":474,"image":750,"draft":478},"\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":752,"title":753,"description":754,"published":755,"category":596,"image":756,"draft":478},"\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":758,"title":759,"description":760,"published":761,"category":474,"image":762,"draft":478},"\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":764,"title":765,"description":766,"published":767,"category":596,"image":768,"draft":478},"\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":770,"title":771,"description":772,"published":773,"category":474,"image":774,"draft":478},"\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":776,"title":777,"description":778,"published":779,"category":474,"image":780,"draft":478},"\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":782,"title":783,"description":784,"published":785,"category":474,"image":786,"draft":478},"\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":788,"title":789,"description":790,"published":791,"category":474,"image":792,"draft":478},"\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":794,"title":795,"description":796,"published":797,"category":596,"image":798,"draft":478},"\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":800,"title":801,"description":802,"published":803,"category":596,"image":804,"draft":478},"\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":806,"title":807,"description":808,"published":809,"category":474,"image":810,"draft":478},"\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":812,"title":813,"description":814,"published":815,"category":474,"image":816,"draft":478},"\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":818,"title":819,"description":820,"published":821,"category":596,"image":822,"draft":478},"\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":457,"title":824,"description":825,"published":826,"category":474,"image":827,"draft":478},"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":829,"title":830,"description":831,"published":826,"category":474,"image":832,"draft":478},"\u002Fblog\u002Fsource-maps-exposed-in-production","Source maps exposées : votre app publie son code original","Une source map exposée laisse n'importe qui lire le code original de votre app, commentaires compris. Le test de 30 secondes, et ce qui compte vraiment.","\u002Fblog\u002Fsource-maps-exposed-in-production\u002Fcard-800x500.png",{"path":834,"title":835,"description":836,"published":837,"category":474,"image":838,"draft":478},"\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":840,"title":841,"description":842,"published":843,"category":596,"image":844,"draft":478},"\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":111,"title":846,"description":847,"published":848,"category":474,"image":849,"draft":478},"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":851,"title":852,"description":853,"published":848,"category":596,"image":854,"draft":478},"\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":856,"title":857,"description":858,"published":859,"category":596,"image":860,"draft":478},"\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":446,"title":862,"description":863,"published":859,"category":474,"image":864,"draft":478},"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",1791618969099]