[{"data":1,"prerenderedAt":1007},["ShallowReactive",2],{"blog-fr-is-lovable-safe":3,"blog-index-fr":773},{"id":4,"title":5,"body":6,"category":725,"cover":726,"coverAlt":727,"description":728,"draft":729,"extension":730,"faq":731,"image":750,"keywords":751,"meta":761,"navigation":762,"ogTitle":763,"path":764,"published":765,"seo":766,"stem":767,"tldr":768,"updated":765,"__hash__":772},"blog_fr\u002Fblog\u002Fis-lovable-safe.md","Lovable est-il sûr ? Ce que 18 554 applications Lovable ont montré",{"type":7,"value":8,"toc":708},"minimark",[9,13,21,24,29,32,35,57,60,66,70,83,220,223,228,240,247,251,254,264,275,287,290,301,305,308,314,319,340,347,351,354,361,367,374,386,390,393,400,407,410,414,417,420,426,429,433,436,439,534,542,555,562,566,569,577,581,584,619,632,636,639,642,653,664,672,676,700],[10,11,12],"p",{},"Vous avez construit quelque chose sur Lovable, ça marche, et vous êtes sur le\npoint d’y mettre de vraies personnes. Quelque part dans cette semaine, vous avez\ntapé « lovable est-il sûr » dans un champ de recherche, et ce qui est revenu\nétait soit une page sur une divulgation de sécurité de 2025, soit un éditeur qui\nvoulait vous vendre un scan. Aucune des deux ne parlait de l’application que\nvous êtes sur le point de publier.",[10,14,15,16,20],{},"Voici ce que la plupart de ces réponses ratent : ",[17,18,19],"strong",{},"« Lovable est-il sûr » est\ntrois questions dans une seule phrase",", et celle qui décide si des inconnus\npeuvent lire les données de vos utilisateurs est celle que presque personne ne\nmesure.",[10,22,23],{},"Nous pouvons la mesurer. Entre le 12 et le 14 août 2026, nous avons passé\n30 998 applications en ligne par les neuf mêmes vérifications externes que\nn’importe qui peut lancer gratuitement sur notre page d’accueil, et 18 554\nd’entre elles étaient publiées sur Lovable. C’est notre plus grande cohorte,\ntrois applications sur cinq parmi toutes celles que nous avons scannées. Voici\nce qui est revenu pour elles, et où s’arrête notre vue.",[25,26,28],"h2",{"id":27},"lovable-est-il-sûr","Lovable est-il sûr ?",[10,30,31],{},"Comme plateforme, oui, et avec une marge plus large que prévu. Ce que Lovable\nproduit lui-même était le plus propre des cinq constructeurs mesurés. Tout ce\nqui a décidé d’une note était dans l’application construite par son\npropriétaire.",[10,33,34],{},"Imaginez une boutique dont la réserve est de l’autre côté de la rue. Lovable\nconstruit la boutique : les vitrines, le comptoir, l’enseigne. Supabase possède\nla réserve, et elle a sa propre serrure sur sa propre porte. Ce que la boutique\ntend à un passant est une question. Ce que la réserve tend à quiconque vient\ndemander en est une tout autre, et aucun rangement de la boutique n’y change\nrien.",[36,37,38,45,51],"ol",{},[39,40,41,44],"li",{},[17,42,43],{},"La plateforme."," Lovable publie-t-il votre application correctement : un\ncertificat valide, un domaine qui n’expire pas, rien qui fuie du build.\nC’est la boutique.",[39,46,47,50],{},[17,48,49],{},"L’agent."," Le code écrit par l’IA de Lovable tient-il la route. Aucun scan\nexterne ne voit le câblage, et cet article le dit plutôt que de le deviner.",[39,52,53,56],{},[17,54,55],{},"L’application que vous avez publiée."," Ce qu’un inconnu atteint depuis le\ntrottoir : une clé dans le code qu’un navigateur télécharge, un bucket de\nstockage qui liste ses fichiers, une table de base qui répond à quiconque\ndemande.",[10,58,59],{},"Nos vérifications lisent la troisième et deux parties de la première. Côté\nplateforme, le certificat était valide sur les 18 486 applications où nous\navons pu en lire un, et aucun domaine sur 18 554 n’approchait de l’expiration.\nCôté agent, nous n’avons rien à mesurer. Côté application, nous avons 18 554\nréponses.",[61,62],"diagram",{"alt":63,"caption":64,"src":65},"Trois panneaux côte à côte. Le premier porte le logo Lovable avec un cadenas et un certificat. Le deuxième porte un signe de code surmonté d’une étincelle. Le troisième porte une page de navigateur avec une base de données séparée à l’extérieur, trois visiteurs tendant vers les deux, et une loupe sur ce seul panneau, avec le nombre 18 554 en dessous.","Trois questions dans une seule recherche. Un scan externe lit le troisième panneau et une partie du premier, et rien du tout dans celui du milieu.","\u002Fblog\u002Fis-lovable-safe\u002Fthree-questions-1600x700.png",[25,67,69],{"id":68},"ce-que-nous-avons-trouvé-dans-18-554-applications-lovable","Ce que nous avons trouvé dans 18 554 applications Lovable",[10,71,72,73,76,77,82],{},"Neuf vérifications, depuis l’extérieur, sans connexion et sans accès au compte\nde qui que ce soit. Nous n’avons jamais lu une ligne : là où une base répondait,\nnous avons demandé combien de lignes elle livrerait et nous nous sommes arrêtés\nlà. Aucune application n’est nommée ici ni ailleurs dans ce que nous publions.\nChaque part ci-dessous porte sur les applications où la vérification a\n",[17,74,75],{},"répondu",", parce qu’une vérification qui n’a pas pu aboutir est inconnue\nplutôt que réussie, et c’est cette règle qui fait bouger les dénominateurs. La\nméthode et les données sont ",[78,79,81],"a",{"href":80},"\u002Fresearch\u002Fvibe-coded-app-security-2026","dans le rapport",".",[84,85,86,103],"table",{},[87,88,89],"thead",{},[90,91,92,96,100],"tr",{},[93,94,95],"th",{},"Ce que nous avons vérifié",[93,97,99],{"align":98},"right","Applications Lovable",[93,101,102],{},"Qui le décide",[104,105,106,118,129,139,149,160,170,180,199,210],"tbody",{},[90,107,108,112,115],{},[109,110,111],"td",{},"En-têtes de sécurité du navigateur manquants",[109,113,114],{"align":98},"18 539 sur 18 554 (99 %)",[109,116,117],{},"L’hébergement de Lovable",[90,119,120,123,126],{},[109,121,122],{},"Une table de base lisible sans connexion",[109,124,125],{"align":98},"2 017 sur 3 553 (57 %)",[109,127,128],{},"Votre application",[90,130,131,134,137],{},[109,132,133],{},"Quelque chose en forme de clé dans le code téléchargé",[109,135,136],{"align":98},"822 sur 18 554 (4 %)",[109,138,128],{},[90,140,141,144,147],{},[109,142,143],{},"Un bucket de stockage qui liste ses fichiers",[109,145,146],{"align":98},"768 sur 16 565 (5 %)",[109,148,128],{},[90,150,151,154,157],{},[109,152,153],{},"Code source d’origine publié (source maps)",[109,155,156],{"align":98},"225 sur 18 553 (1 %)",[109,158,159],{},"Un réglage de build",[90,161,162,165,168],{},[109,163,164],{},"Une route d’API qui a livré des données à un inconnu",[109,166,167],{"align":98},"8 sur 18 518",[109,169,128],{},[90,171,172,175,178],{},[109,173,174],{},"N’importe quel site autorisé à appeler votre API",[109,176,177],{"align":98},"0 sur 18 518",[109,179,128],{},[90,181,182,194,197],{},[109,183,184,185,189,190,193],{},"Un fichier privé comme ",[186,187,188],"code",{},".env"," ou ",[186,191,192],{},".git\u002Fconfig"," à une URL ouverte",[109,195,196],{"align":98},"0 sur 18 442",[109,198,128],{},[90,200,201,204,207],{},[109,202,203],{},"Certificat expiré ou non fiable",[109,205,206],{"align":98},"0 sur 18 486",[109,208,209],{},"Lovable",[90,211,212,215,218],{},[109,213,214],{},"Domaine sur le point d’expirer",[109,216,217],{"align":98},"0 sur 18 554",[109,219,209],{},[10,221,222],{},"Les notes : 15 963 A, 370 B, 1 814 C, 402 D et 5 F. Neuf applications n’avaient\naucune trouvaille du tout.",[61,224],{"alt":225,"caption":226,"src":227},"Six barres horizontales sur une même échelle, chacune précédée d’un petit signe et suivie d’un nombre : 18 539 pour les en-têtes, 2 017 pour les tables exposées, 822 pour les clés, 768 pour les buckets de stockage, 225 pour les source maps et 8 pour les routes ouvertes. La barre du haut est gris pâle et les autres turquoise, et le 8 est un trait fin entouré d’un anneau.","Des nombres d’applications, pas des taux : une échelle, six trouvailles. La barre grise est décidée par l’hébergement. Chaque barre turquoise découlait de quelque chose dans l’application. La ligne des tables exposées se mesure sur un dénominateur plus petit, que l’image suivante démonte.","\u002Fblog\u002Fis-lovable-safe\u002Fwhat-we-found-1600x680.png",[10,229,230,231,234,235,239],{},"Cette première ligne explique pourquoi « 99 % des applications Lovable ont un\nproblème de sécurité » est une phrase que vous lirez quelque part et devriez\nignorer. Les en-têtes de sécurité du navigateur sont envoyés par ce qui sert\nvotre page, et sur ",[186,232,233],{},"votreapp.lovable.app"," c’est Lovable, d’où la même réponse\npour toutes les applications de cet hôte. Ils\n",[78,236,238],{"href":237},"\u002Fblog\u002Fmissing-security-headers","valent le coup"," et ils ne sont pas ce dont un\nD est fait.",[10,241,242,243,246],{},"Retirez cette ligne et ",[17,244,245],{},"15 453 des 18 554 applications n’avaient rien\nd’autre",". Les 3 092 restantes sont le reste de cet article.",[25,248,250],{"id":249},"ce-que-lovable-fait-bien-et-cest-lessentiel-de-la-liste","Ce que Lovable fait bien, et c’est l’essentiel de la liste",[10,252,253],{},"Trois des chiffres ci-dessus sont les meilleurs que nous ayons relevés chez un\nconstructeur, et tous les trois sont décidés par la plateforme et non par vous.",[10,255,256,259,260,82],{},[17,257,258],{},"Les source maps."," 225 applications Lovable sur 18 553 publient les fichiers\nd’origine derrière l’application, commentaires compris. C’est environ 1 sur 80.\nChez Base44, la même vérification se déclenche sur 59 % des applications, et\nchez Replit sur 6 %. Le build de production de Lovable fait ce qu’il faut par\ndéfaut, donc\n",[78,261,263],{"href":262},"\u002Fblog\u002Fsource-maps-exposed-in-production","ce point n’est le plus souvent pas votre problème",[10,265,266,269,270,274],{},[17,267,268],{},"Les en-têtes cross-origin."," Zéro application sur 18 518 a dit à un site\nquelconque du monde qu’il pouvait appeler son API, et zéro l’a autorisé avec les\ncookies de connexion du visiteur. C’est la trouvaille qui\n",[78,271,273],{"href":272},"\u002Fblog\u002Fcors-wildcard-security-risk","laisse le plus facilement un autre site agir comme votre utilisateur",",\net sur Lovable elle n’est pas apparue une seule fois.",[10,276,277,280,281,283,284,286],{},[17,278,279],{},"Les fichiers privés égarés."," Zéro application sur 18 442 servait un ",[186,282,188],{}," ou\nun ",[186,285,192],{}," depuis une URL ordinaire. Une application Lovable n’a pas de\nserveur à elle à mal configurer, donc il n’y a pas de fichier oublié à\nl’arrière.",[10,288,289],{},"Rien de tout cela n’est un lot de consolation. C’est la partie du travail à\nlaquelle vous n’avez pas eu à penser et à laquelle, chez la plupart des autres\nconstructeurs, quelqu’un pense.",[291,292,294],"callout",{"type":293},"note",[10,295,296,297,82],{},"Gratuit, sans compte, environ 20 secondes : le scan sur notre page d’accueil\nlance les neuf vérifications contre votre application en ligne et écrit\n« Impossible à vérifier » plutôt qu’une coche pour tout ce à quoi il n’a pas eu\nde réponse. ",[78,298,300],{"href":299},"\u002Fsecurity-scanner","Scanner votre application",[25,302,304],{"id":303},"le-seul-chiffre-qui-compte-2-017-sur-3-553","Le seul chiffre qui compte : 2 017 sur 3 553",[10,306,307],{},"Parmi les applications Lovable dont nous avons pu réellement interroger la base\nSupabase, 57 % ont livré des lignes à une requête ne portant aucune connexion.",[10,309,310,311,82],{},"Les dénominateurs méritent d’être parcourus, parce que c’est le chiffre que tout\nle monde cite et que presque personne ne cadre. Sur 18 554 applications Lovable,\n6 532 nommaient un projet Supabase dans le code livré. Parmi elles, 3 553 ont\nrépondu assez bien pour que nous puissions juger, et les 2 979 autres non : elles\nsont donc inconnues plutôt que propres. Sur ces 3 553, ",[17,312,313],{},"2 017 ont rendu des\nlignes à un inconnu",[61,315],{"alt":316,"caption":317,"src":318},"Un entonnoir dessiné en quatre barres empilées qui se rétrécissent : 18 554 applications Lovable, 6 532 qui nommaient un projet Supabase, 3 553 dont la base a donné une réponse exploitable, et 2 017 qui ont rendu des lignes sans connexion. La dernière barre est rouge et la troisième porte un point d’interrogation pour les 2 979 impossibles à juger.","Quatre dénominateurs, pas un. La barre citée comme titre est la dernière, et elle se mesure sur la troisième.","\u002Fblog\u002Fis-lovable-safe\u002Fwhere-it-lands-1600x620.png",[10,320,321,322,325,326,329,330,329,333,329,336,339],{},"Dans ",[17,323,324],{},"373"," de ces applications, la table qui répondait portait un nom de\npersonnes : ",[186,327,328],{},"users",", ",[186,331,332],{},"profiles",[186,334,335],{},"orders",[186,337,338],{},"messages",". Ce sont 373\napplications, pas 373 tables. Dans les 1 644 autres, c’était quelque chose que\nnous ne pouvions pas nommer depuis l’extérieur : peut-être un catalogue produit\ndestiné à être public, peut-être tout autre chose.",[10,341,342,343,346],{},"Mesurés sur toutes les applications Lovable scannées plutôt que sur le\nsous-ensemble jugeable, 2 017 sur 18 554 font environ ",[17,344,345],{},"11 sur 100",". Gardez ce\nchiffre en tête pour deux sections.",[25,348,350],{"id":349},"pourquoi-cela-retombe-sur-la-base-et-non-sur-lovable","Pourquoi cela retombe sur la base et non sur Lovable",[10,352,353],{},"À cause d’un choix de conception correct, délibéré, et presque jamais expliqué à\nla personne qu’il concerne.",[10,355,356,357,360],{},"Une application Lovable n’a pas de serveur à elle. La page dans le navigateur du\nvisiteur parle directement à Supabase, ce qui explique qu’on puisse bâtir\nl’ensemble en un après-midi et que si peu de ces applications aient une route\nd’API ouverte : il n’y a pas d’API à vous à laisser ouverte. Pour que cela\nfonctionne, l’adresse de votre base et une clé pour y accéder doivent être\ninscrites dans l’application, là où n’importe qui peut les lire. Cette clé est\nla clé ",[17,358,359],{},"publiable",", et le fait qu’elle soit publique est correct. Elle est\ncensée être là.",[10,362,363,364,366],{},"Ce qui veut dire que la seule chose entre un inconnu et votre table ",[186,365,328],{}," est\nun réglage Supabase par table appelé Row Level Security. Activé et accompagné\nd’une policy, la clé publique ne lit que les lignes autorisées par cette policy.\nDésactivé, la clé publique lit la table.",[10,368,369,370,373],{},"Maintenant la partie qui décide de la plupart des projets Lovable. Supabase\nactive Row Level Security par défaut pour les tables créées en cliquant dans le\nTable Editor. Les tables créées ",[17,371,372],{},"en exécutant du SQL"," ne l’ont pas, et exécuter\ndu SQL est la façon dont un constructeur crée des tables pour vous. La forme\nhabituelle d’un projet Lovable est donc : quelques tables faites à la main, qui\nsont protégées, à côté de celles qui ont été générées, qui ne le sont\npeut-être pas. Les deux sont identiques à l’œil. Aucune ne se plaint.\nL’application marche parfaitement dans les deux cas, et c’est tout le problème :\nrien, vu de devant, ne vous dit laquelle vous avez.",[10,375,376,377,381,382,82],{},"La version longue, avec le SQL,\n",[78,378,380],{"href":379},"\u002Fblog\u002Fenable-rls-on-every-supabase-table","est ici",", et le guide en langage\nclair pour cette plateforme est\n",[78,383,385],{"href":384},"\u002Fis-your-lovable-app-safe","votre application Lovable est-elle sûre",[25,387,389],{"id":388},"la-policy-qui-efface-lerreur-et-laisse-la-table-ouverte","La policy qui efface l’erreur et laisse la table ouverte",[10,391,392],{},"Activer Row Level Security est l’étape un sur deux, et c’est à l’étape deux\nqu’un assistant IA fait très volontiers la mauvaise chose.",[10,394,395,396,399],{},"Le réglage activé et aucune policy écrite, votre propre application cesse de\nfonctionner. Vous obtenez une erreur, vous la collez dans le chat, et il revient\nquelque chose qui fait disparaître l’erreur. Très souvent, c’est une policy qui\nautorise tout le monde, écrite ",[186,397,398],{},"using (true)",". C’est une policy valide. Elle\nsatisfait l’exigence qu’une policy existe. Elle autorise chaque ligne à chaque\nrequête.",[10,401,402,403,82],{},"Le tableau de bord annonce désormais la table comme protégée, l’erreur a\ndisparu, votre application marche, et la table est exactement aussi lisible\nqu’avant. Nous avons un article entier là-dessus parce que c’est l’échec le plus\nconvaincant de toute la pile :\n",[78,404,406],{"href":405},"\u002Fblog\u002Fsupabase-rls-on-but-table-still-public","RLS est activé et votre table est toujours publique",[10,408,409],{},"Si vous avez déjà collé une erreur de Row Level Security dans une fenêtre de\nchat et accepté le premier correctif qui a fait passer le build, allez lire\ncette policy aujourd’hui.",[25,411,413],{"id":412},"cve-2025-48757-et-pourquoi-ce-nest-plus-votre-question","CVE-2025-48757, et pourquoi ce n’est plus votre question",[10,415,416],{},"Elle est réelle, elle était sérieuse, et côté Lovable elle est close depuis plus\nd’un an. Elle n’est pas non plus ce que vous devriez chercher.",[10,418,419],{},"En mai 2025, le chercheur en sécurité Matt Palmer a publié CVE-2025-48757, sur\ndes applications Lovable dont les tables Supabase avaient une Row Level Security\nabsente ou écrite trop largement. Il a scanné 1 645 applications Lovable et en a\ntrouvé 170 avec des bases exposées. La réponse de Lovable a été d’ajouter une\nvérification de sécurité qui tourne avant publication et avertit des tables non\nprotégées.",[10,421,422,423],{},"Voici la lecture honnête, et c’est pourquoi la CVE est le mauvais cadre. Cette\ndivulgation a trouvé environ 10 applications exposées sur 100. Seize mois plus\ntard, sur une cohorte onze fois plus grande, nous en avons trouvé environ 11 sur 100. Les dénominateurs ne sont pas identiques et aucun des deux échantillons\nn’est l’internet entier : prenez les deux comme le même ordre de grandeur plutôt\nque comme une comparaison précise. La direction est assez claire : ",[17,424,425],{},"le taux n’a\npas baissé.",[10,427,428],{},"Ce n’est pas un correctif qui a échoué. C’est le signe que ça n’a jamais\nvraiment été une vulnérabilité dans un produit. C’est un réglage sur vos propres\ntables, dans votre propre projet Supabase, que personne d’autre ne peut activer\nà votre place. Un correctif n’y arrive pas, et c’est exactement pour cela qu’une\nvérification que vous lancez vous-même y arrive.",[25,430,432],{"id":431},"de-quoi-les-822-clés-étaient-réellement-faites","De quoi les 822 clés étaient réellement faites",[10,434,435],{},"Presque toutes allaient bien, et un scanner qui vous dirait le contraire vous\napprendrait à l’ignorer.",[10,437,438],{},"822 des 18 554 applications Lovable avaient quelque chose en forme de clé dans\nle code qu’un visiteur télécharge. Lu comme une liste de formes, cela fait 4 %\ndes applications qui « fuient des secrets ». Lu comme ce que chaque clé peut\nréellement faire, cela ressemble à ceci :",[84,440,441,454],{},[87,442,443],{},[90,444,445,448,451],{},[93,446,447],{},"Ce que nous avons trouvé dans le bundle",[93,449,450],{"align":98},"Apps",[93,452,453],{},"Ce que cela veut dire",[104,455,456,467,478,489,499,509,523],{},[90,457,458,461,464],{},[109,459,460],{},"Une clé d’API Google",[109,462,463],{"align":98},"727",[109,465,466],{},"Correcte en général, une fois restreinte à votre domaine",[90,468,469,472,475],{},[109,470,471],{},"Un secret non attribuable",[109,473,474],{"align":98},"82",[109,476,477],{},"Nous n’avons pas pu dire à quel fournisseur il appartient",[90,479,480,483,486],{},[109,481,482],{},"Une clé OpenAI",[109,484,485],{"align":98},"18",[109,487,488],{},"Facture votre compte, directement",[90,490,491,494,497],{},[109,492,493],{},"Une clé d’accès AWS",[109,495,496],{"align":98},"7",[109,498,488],{},[90,500,501,504,507],{},[109,502,503],{},"Une clé Anthropic",[109,505,506],{"align":98},"3",[109,508,488],{},[90,510,511,518,520],{},[109,512,513,514,517],{},"Un ",[186,515,516],{},"service_role"," Supabase",[109,519,506],{"align":98},[109,521,522],{},"Lit et écrit chaque ligne de chaque table, ignore chaque règle",[90,524,525,528,531],{},[109,526,527],{},"Un secret Stripe en production",[109,529,530],{"align":98},"2",[109,532,533],{},"Votre compte de paiement",[10,535,536,537,541],{},"Les 727 clés Google sont la raison pour laquelle nous classons au lieu de\nsimplement reconnaître des formes. Une clé Google Maps dans un navigateur est\nlà où elle doit être, et le correctif est\n",[78,538,540],{"href":539},"\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend","de la restreindre à votre propre domaine","\nplutôt que de paniquer.",[10,543,544,545,547,548,550,551,82],{},"Ce sont les quatre dernières lignes qui comptent, et elles sont rares : 30\napplications sur 18 554. Ce sont aussi les trouvailles qui coûtent de l’argent\ntoutes seules, et elles font surface le plus souvent sous forme de facture avant\nque quiconque ait remarqué quoi que ce soit. Deux détails pour le procès-verbal.\nLes trois clés ",[186,546,516],{}," de tout le scan sur 30 998 applications étaient\ndans des applications Lovable, et deux des trois secrets Stripe en production\naussi. Une clé ",[186,549,516],{}," dans un navigateur rend chaque policy Row Level\nSecurity de votre projet sans objet en une ligne, ce qui en fait la seule\ntrouvaille que nous classons critique à vue, et celle\n",[78,552,554],{"href":553},"\u002Fblog\u002Frotate-supabase-service-role-key","qu’il faut faire tourner le jour même",[10,556,557,558,82],{},"Distinguer les deux sortes prend environ une minute, et\n",[78,559,561],{"href":560},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","nous avons écrit le guide",[25,563,565],{"id":564},"les-768-buckets-de-stockage-que-personne-ne-voulait-ouvrir","Les 768 buckets de stockage que personne ne voulait ouvrir",[10,567,568],{},"Un bucket Supabase marqué public ne sert pas seulement les fichiers que votre\napplication référence. Il liste aussi chaque fichier qu’il contient à quiconque\nle demande.",[10,570,571,572,576],{},"768 des 16 565 applications Lovable vérifiables avaient au moins un bucket qui\nlistait son contenu. La raison est la même que pour les tables lisibles : rendre\nun bucket public est la façon de faire apparaître une image, cela marche tout de\nsuite, et rien ensuite ne vous dit que le listage est venu avec. Factures\ntéléversées, photos de pièces d’identité et avatars d’utilisateurs finissent\ntous au même endroit.\n",[78,573,575],{"href":574},"\u002Fblog\u002Fsupabase-storage-bucket-public","Ce qu’un bucket public expose réellement","\ncouvre le correctif, qui est des URL signées plutôt qu’un bucket privé dont vous\nne pourrez plus lire le contenu.",[25,578,580],{"id":579},"la-vérification-de-cinq-minutes-sur-votre-application-lovable","La vérification de cinq minutes sur votre application Lovable",[10,582,583],{},"Chaque point est une page que vous ouvrez. Utilisez une fenêtre privée pour que\nvotre propre connexion ne réponde pas à la place d’un inconnu.",[36,585,586,592,598,604,610],{},[39,587,588,591],{},[17,589,590],{},"Supabase → Authentication → Policies."," Parcourez la liste. Toute table\naffichant Row Level Security désactivée est lisible par quiconque a l’adresse\nde votre projet, laquelle est inscrite dans votre application.",[39,593,594,597],{},[17,595,596],{},"Lisez les policies des tables où c’est activé."," Si l’une d’elles autorise\ntout le monde, la table est ouverte et le tableau de bord la dit quand même\nprotégée.",[39,599,600,603],{},[17,601,602],{},"Supabase → Storage."," Tout bucket marqué public liste ses fichiers à\nquiconque. Regardez ce qu’il contient avant de décider que c’est acceptable.",[39,605,606,609],{},[17,607,608],{},"Supabase → Settings → API."," Confirmez que la clé livrée par votre\napplication est la clé publiable. Si une clé secrète a un jour été collée dans\nle projet, faites-la tourner là avant de la supprimer du code, parce que\nl’ancienne valeur fonctionne jusque-là.",[39,611,612,615,616,82],{},[17,613,614],{},"Ou laissez le scan le faire."," Il lance ces quatre points depuis l’extérieur\net cinq autres, prend environ 20 secondes, ne demande aucun compte, et vous\nmontre une note et ce qui l’a produite :\n",[78,617,618],{"href":299},"scanner votre application",[10,620,621,622,626,627,631],{},"Si vous préférez parcourir toute la surface comme une liste, la\n",[78,623,625],{"href":624},"\u002Fchecklist","checklist de sécurité en 10 minutes"," couvre ce qu’il vaut la peine\nde confirmer sur toute application fraîchement lancée, et\n",[78,628,630],{"href":629},"\u002Fblog\u002Fcan-anyone-read-your-supabase-database","n’importe qui peut-il lire votre base Supabase","\nest le test à faire si vous ne faites qu’une seule chose.",[25,633,635],{"id":634},"votre-application-change-à-chaque-publication","Votre application change à chaque publication",[10,637,638],{},"Un scan lancé le mois dernier décrit l’application du mois dernier, et sur\nLovable c’est un mois plus court qu’ailleurs.",[10,640,641],{},"Publier est un clic, donc un changement est en ligne dès que vous l’acceptez. Il\nn’y a aucune étape de déploiement entre vous et internet pour rattraper une\ntable ajoutée ce matin sans Row Level Security, ou une clé collée dans le chat à\nminuit pour passer un build qui échouait. Chacune des 2 017 bases exposées que\nnous avons trouvées appartenait à quelqu’un dont l’application marchait très\nbien.",[10,643,644,648,649,652],{},[78,645,647],{"href":646},"\u002Fpricing","Reeve Monitor"," est la version de cet article qui se lance toute\nseule. Il relance les neuf vérifications toutes les heures sur jusqu’à trois\napplications, regarde toutes les 60 secondes si l’application répond, vous\nprévient quand un résultat ",[17,650,651],{},"change"," plutôt que d’attendre que vous regardiez,\net envoie un rapport mensuel. Il coûte €12 par mois au tarif public, avec sept\njours gratuits avant tout prélèvement ; la page de tarifs est parfois en dessous\ndu chiffre indiqué ici et jamais au-dessus.",[10,654,655,658,659,663],{},[17,656,657],{},"Si votre application Lovable utilise Supabase, et 6 532 des 18 554 scannées le\nfont, l’autre moitié du problème est la copie."," Une table exposée est une chose\nqu’un inconnu peut lire. Un agent avec accès à la base, ou une migration partie\ndans le mauvais sens, est une chose qui peut l’effacer, et la sauvegarde\nquotidienne de Supabase sur l’offre gratuite n’est pas quelque chose que vous\npouvez restaurer vous-même. ",[78,660,662],{"href":661},"\u002Fsupabase-backups","Reeve Care"," prend chaque nuit\nune copie chiffrée de votre base Supabase, la garde là où votre projet ne peut\npas l’atteindre, vérifie que chaque copie se restaure réellement, et vous donne\nune restauration en un clic le jour venu. Tout ce que fait Monitor est inclus.\nCare coûte €49 par mois au tarif public pour une application, avec les mêmes\nsept jours gratuits.",[10,665,666,667,671],{},"La forme de ce second échec, racontée par quelqu’un à qui c’est arrivé, est\n",[78,668,670],{"href":669},"\u002Fblog\u002Fai-agent-deleted-my-database","le jour où un agent IA a effacé une base de production",".\nAucune des neuf vérifications de cet article n’aurait aidé là. Une copie, si.",[25,673,675],{"id":674},"ce-quil-faut-faire-cette-semaine","Ce qu’il faut faire cette semaine",[677,678,679],"key-takeaways",{},[680,681,682,685,688,691,697],"ul",{},[39,683,684],{},"Ouvrez Supabase → Authentication → Policies et lisez la liste. Toute table avec Row Level Security désactivée est lisible par quiconque a l’adresse de votre application.",[39,686,687],{},"Lisez les policies des tables où c’est activé. Une policy qui autorise tout le monde laisse la table ouverte pendant que le tableau de bord la dit protégée.",[39,689,690],{},"Vérifiez les buckets publics dans Storage. Un bucket public liste chaque fichier qu’il contient, pas seulement ceux que votre application référence.",[39,692,693,694,696],{},"Confirmez que la clé dans votre application est la clé publiable. Une clé ",[186,695,516],{}," dans le navigateur rend sans objet chaque policy que vous avez écrite, et c’est une affaire du jour même.",[39,698,699],{},"Gardez une copie de votre base là où votre projet et votre agent ne peuvent pas aller, et vérifiez que cette copie se restaure.",[10,701,702,703,707],{},"Lovable a bien fait sa moitié. Les 2 017 sont la moitié qui vous appartient, et\nc’est un réglage plutôt qu’une réécriture. Si vous voulez plutôt la comparaison\nentre constructeurs,\n",[78,704,706],{"href":705},"\u002Fblog\u002Fsafest-ai-app-builder","quel constructeur d’applications IA est le plus sûr","\na le tableau pour les cinq.",{"title":709,"searchDepth":710,"depth":710,"links":711},"",3,[712,714,715,716,717,718,719,720,721,722,723,724],{"id":27,"depth":713,"text":28},2,{"id":68,"depth":713,"text":69},{"id":249,"depth":713,"text":250},{"id":303,"depth":713,"text":304},{"id":349,"depth":713,"text":350},{"id":388,"depth":713,"text":389},{"id":412,"depth":713,"text":413},{"id":431,"depth":713,"text":432},{"id":564,"depth":713,"text":565},{"id":579,"depth":713,"text":580},{"id":634,"depth":713,"text":635},{"id":674,"depth":713,"text":675},"Bases de la sécurité","\u002Fblog\u002Fis-lovable-safe\u002Fcover-1200x630.png","Le logo Lovable sur une tuile blanche, une flèche vers l’application publiée, une vers trois visiteurs, et une base de données en dessous.","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.",false,"md",[732,735,738,741,744,747],{"q":733,"a":734},"Lovable est-il assez sûr pour un vrai produit ?","Du côté de la plateforme, c’était le plus propre des cinq constructeurs scannés. Chaque certificat lisible était valide, aucun domaine n’approchait de l’expiration, aucune application n’autorisait un site quelconque à appeler son API, et 225 sur 18 553 publiaient leur code source. Ce qui décide si votre produit est sûr à faire tourner là, c’est la base derrière : 2 017 des 3 553 applications Lovable dont nous avons pu interroger Supabase ont livré des lignes à une requête sans connexion. C’est un réglage sur vos tables, il vous appartient, et vous le vérifiez en cinq minutes environ.",{"q":736,"a":737},"Les gens peuvent-ils voir le code source de mon application Lovable ?","La moitié navigateur, toujours, parce qu’un navigateur ne peut pas dessiner une page qu’on ne lui a pas envoyée. Ce qu’ils ne lisent normalement pas, ce sont vos fichiers d’origine avec leurs commentaires et leurs noms de variables, et c’est exactement ce que livre une source map publiée. 225 des 18 553 applications Lovable vérifiées en publiaient une, environ 1 sur 80, le taux le plus bas de tous les constructeurs mesurés. Vos requêtes de base sont une autre affaire : une application Lovable parle à Supabase directement depuis le navigateur, donc les noms de tables et de colonnes qu’elle lit sont visibles pour quiconque ouvre l’onglet réseau.",{"q":739,"a":740},"Mes données Supabase sont-elles en sécurité dans une application Lovable ?","Cela dépend d’un seul réglage par table et de rien d’autre. Une application Lovable atteint Supabase directement depuis le navigateur du visiteur avec une clé publiable censée être publique, donc la seule chose entre un inconnu et une table est Row Level Security. Désactivée, cette clé publique lit la table entière. Nous l’avons mesuré sur 3 553 applications Lovable et 2 017 ont répondu à une requête anonyme par des lignes. Dans 373 d’entre elles, la table exposée portait un nom de personnes : users, profiles, orders, messages.",{"q":742,"a":743},"Qu’était CVE-2025-48757 et cela me concerne-t-il encore ?","C’est la divulgation de 2025 par le chercheur en sécurité Matt Palmer, portant sur des applications Lovable dont les tables Supabase avaient une Row Level Security absente ou écrite trop largement. Il a scanné 1 645 applications Lovable et en a trouvé 170 avec des bases exposées. Lovable a répondu en ajoutant une vérification de sécurité qui tourne avant publication. Ce n’est pas un correctif que vous attendez, et ça ne l’a jamais été, parce que l’exposition est un réglage sur vos propres tables plutôt qu’un défaut dans le code de Lovable : c’est pourquoi nos chiffres de 2026 ressemblent tant aux siens de 2025. Savoir si cela vous concerne se règle aujourd’hui en ouvrant une page dans Supabase.",{"q":745,"a":746},"La vérification de sécurité de Lovable repère-t-elle une table exposée ?","Lovable lance avant publication une vérification qui lit votre projet de l’intérieur : le schéma, les policies, les dépendances. Cela voit des choses qu’un scan externe ne peut structurellement pas voir, comme une table que votre interface ne nomme jamais. Ce qu’elle ne peut pas prouver, c’est qu’une policy tient réellement, parce qu’une policy peut exister, paraître valide et rendre quand même chaque ligne à tout le monde. Les deux points de vue répondent à des questions différentes : lancez celui de l’intérieur avant de publier et un externe après, et si les deux se contredisent, c’est la réponse de l’extérieur qui gagne.",{"q":748,"a":749},"Lovable est-il plus sûr que Bolt ou Replit ?","Sur ce que décide la plateforme, Lovable est arrivé devant les quatre autres que nous avons mesurés : moins de source maps publiées que partout ailleurs, aucun en-tête cross-origin ouvert, et aucun problème de certificat ou de domaine. Sur ce que décide le propriétaire, cela ressemble à partout ailleurs, parce que ces trouvailles découlent de la façon dont une application a été construite et non du lieu où elle l’a été. Nous avons mis la comparaison complète dans un article séparé plutôt que de répéter le tableau ici.","\u002Fblog\u002Fis-lovable-safe\u002Fcard-800x500.png",[752,753,754,755,756,757,758,759,760],"lovable est-il sûr","sécurité lovable","lovable est-il sécurisé","les applications lovable sont-elles sûres","sécurité lovable supabase","lovable rls","lovable en production","problèmes de sécurité lovable","fuite de données lovable",{},true,"Lovable est-il sûr ? Ce que 18 554 applications ont montré","\u002Fblog\u002Fis-lovable-safe","2026-09-21",{"title":5,"description":728},"blog\u002Fis-lovable-safe",[769,770,771],"Lovable est-il sûr ? La plateforme était la plus propre des cinq constructeurs mesurés. 225 applications sur 18 553 publiaient leur code source, aucune n’autorisait n’importe quel site à appeler son API, et 15 963 sur 18 554 ont obtenu un A.","Tout ce que nous avons trouvé de sérieux était dans l’application construite par son propriétaire. Sur les 3 553 applications Lovable dont nous avons pu interroger la base Supabase, 2 017 ont livré des lignes à une requête sans connexion.","Cela fait environ 11 applications Lovable sur 100 dans notre scan. Un chercheur mesurant la même chose en mai 2025 en trouvait 10 sur 100 : seize mois plus tard, le taux n’a pas bougé.","tLN6zwLP8GHPg_PcwYqNYAj_gtx92HVCyKs9uyVv16c",[774,781,787,788,794,800,806,812,818,824,830,836,842,847,852,858,863,869,875,881,886,892,898,904,910,916,922,928,934,939,945,951,956,961,966,971,975,981,987,992,997,1003],{"path":775,"title":776,"description":777,"published":778,"category":779,"image":780,"draft":729},"\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":782,"title":783,"description":784,"published":785,"category":725,"image":786,"draft":729},"\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":764,"title":5,"description":728,"published":765,"category":725,"image":750,"draft":729},{"path":789,"title":790,"description":791,"published":792,"category":725,"image":793,"draft":729},"\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":795,"title":796,"description":797,"published":798,"category":725,"image":799,"draft":729},"\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":801,"title":802,"description":803,"published":804,"category":725,"image":805,"draft":729},"\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":807,"title":808,"description":809,"published":810,"category":725,"image":811,"draft":729},"\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":813,"title":814,"description":815,"published":816,"category":725,"image":817,"draft":729},"\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":819,"title":820,"description":821,"published":822,"category":725,"image":823,"draft":729},"\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":825,"title":826,"description":827,"published":828,"category":779,"image":829,"draft":729},"\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":831,"title":832,"description":833,"published":834,"category":779,"image":835,"draft":729},"\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":837,"title":838,"description":839,"published":840,"category":779,"image":841,"draft":729},"\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":705,"title":843,"description":844,"published":845,"category":725,"image":846,"draft":729},"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":379,"title":848,"description":849,"published":850,"category":725,"image":851,"draft":729},"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":853,"title":854,"description":855,"published":856,"category":725,"image":857,"draft":729},"\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":553,"title":859,"description":860,"published":861,"category":725,"image":862,"draft":729},"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":864,"title":865,"description":866,"published":867,"category":725,"image":868,"draft":729},"\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":870,"title":871,"description":872,"published":873,"category":725,"image":874,"draft":729},"\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":876,"title":877,"description":878,"published":879,"category":725,"image":880,"draft":729},"\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":237,"title":882,"description":883,"published":884,"category":725,"image":885,"draft":729},"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":887,"title":888,"description":889,"published":890,"category":725,"image":891,"draft":729},"\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":893,"title":894,"description":895,"published":896,"category":725,"image":897,"draft":729},"\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":899,"title":900,"description":901,"published":902,"category":779,"image":903,"draft":729},"\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":905,"title":906,"description":907,"published":908,"category":725,"image":909,"draft":729},"\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":911,"title":912,"description":913,"published":914,"category":779,"image":915,"draft":729},"\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":917,"title":918,"description":919,"published":920,"category":725,"image":921,"draft":729},"\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":923,"title":924,"description":925,"published":926,"category":725,"image":927,"draft":729},"\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":929,"title":930,"description":931,"published":932,"category":725,"image":933,"draft":729},"\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":272,"title":935,"description":936,"published":937,"category":725,"image":938,"draft":729},"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":940,"title":941,"description":942,"published":943,"category":779,"image":944,"draft":729},"\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":946,"title":947,"description":948,"published":949,"category":779,"image":950,"draft":729},"\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":574,"title":952,"description":953,"published":954,"category":725,"image":955,"draft":729},"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":539,"title":957,"description":958,"published":959,"category":725,"image":960,"draft":729},"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":669,"title":962,"description":963,"published":964,"category":779,"image":965,"draft":729},"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":629,"title":967,"description":968,"published":969,"category":725,"image":970,"draft":729},"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":262,"title":972,"description":973,"published":969,"category":725,"image":974,"draft":729},"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":976,"title":977,"description":978,"published":979,"category":725,"image":980,"draft":729},"\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":982,"title":983,"description":984,"published":985,"category":779,"image":986,"draft":729},"\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":405,"title":988,"description":989,"published":990,"category":725,"image":991,"draft":729},"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":993,"title":994,"description":995,"published":990,"category":779,"image":996,"draft":729},"\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":998,"title":999,"description":1000,"published":1001,"category":779,"image":1002,"draft":729},"\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":560,"title":1004,"description":1005,"published":1001,"category":725,"image":1006,"draft":729},"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",1790150951365]