[{"data":1,"prerenderedAt":375},["ShallowReactive",2],{"blog-fr-can-anyone-read-your-supabase-database":3},{"id":4,"title":5,"body":6,"category":336,"cover":337,"coverAlt":337,"description":338,"draft":339,"extension":340,"faq":341,"image":357,"keywords":358,"meta":364,"navigation":365,"ogTitle":30,"path":366,"published":367,"seo":368,"stem":369,"tldr":370,"updated":367,"__hash__":374},"blog_fr\u002Fblog\u002Fcan-anyone-read-your-supabase-database.md","Qui peut lire votre base Supabase ? Nous avons testé 3 680 apps",{"type":7,"value":8,"toc":324},"minimark",[9,13,20,23,26,31,34,43,46,49,53,56,116,122,125,131,137,148,152,155,160,184,191,199,203,206,209,217,221,224,231,235,238,244,250,259,263,297,300,305,312],[10,11,12],"p",{},"Votre app a un écran de connexion. Derrière lui se trouvent vos utilisateurs,\nleurs messages, peut-être leurs commandes. Cela paraît privé, et il n'y a aucun\nmoyen évident de savoir si ça l'est vraiment, parce que la console Supabase\nn'est pas un endroit où vous avez jamais eu besoin d'aller.",[10,14,15,16],{},"Alors nous sommes allés le mesurer sur les apps des autres. En août 2026, nous\navons scanné 30 998 apps en ligne publiées depuis Lovable, Base44, Replit, v0 et\nBolt, en posant à chacune une seule question : ",[17,18,19],"strong",{},"n'importe qui peut-il lire\nvotre base de données Supabase sans se connecter ?",[10,21,22],{},"Pour 2 096 des 3 680 apps où nous avons obtenu une réponse nette : oui.",[10,24,25],{},"Et voici ce que ratent à la fois la version alarmante de cette histoire et la\nversion rassurante. Une table ouverte n'est pas automatiquement une fuite :\nbeaucoup de tables sont faites pour être lues par tout le monde. Quelle table\nc'est décide de tout, et seule la personne qui a construit l'app peut répondre.\nC'est aussi pour cela que personne ne le remarque : l'app fonctionne\nparfaitement dans les deux cas.",[27,28,30],"h2",{"id":29},"qui-peut-lire-votre-base-de-données-supabase","Qui peut lire votre base de données Supabase ?",[10,32,33],{},"Pour plus de la moitié des apps que nous avons pu vérifier, tout le monde : au\nmoins une table a renvoyé des lignes à une requête ne portant aucune connexion.",[10,35,36,37,42],{},"Que ce soit possible n'a rien à voir avec quoi que ce soit de cassé. Votre app\nparle à Supabase depuis le navigateur de votre visiteur, elle transporte donc\nune clé que chaque visiteur peut lire, et cette clé\n",[38,39,41],"a",{"href":40},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","est faite pour être publique",".\nElle nomme votre projet. À elle seule, elle n'accorde rien.",[10,44,45],{},"Ce qui décide si un inconnu obtient vos données, c'est Row Level Security : une\nrègle sur chaque table qui dit qui peut lire quelles lignes. Sans règle, la clé\nest la seule chose entre internet et cette table, et la clé est écrite dans\nvotre page.",[10,47,48],{},"C'est cela que nous mesurions. Pas si une clé était visible (elle l'est\ntoujours), mais ce que fait la base de données quand quelqu'un s'en sert.",[27,50,52],{"id":51},"de-quoi-ces-57-sont-ils-une-part","De quoi ces 57 % sont-ils une part ?",[10,54,55],{},"D'une base que nous avons resserrée trois fois, et ce resserrement compte plus\nque le titre.",[57,58,59,72],"table",{},[60,61,62],"thead",{},[63,64,65,69],"tr",{},[66,67,68],"th",{},"Ce que nous avons compté",[66,70,71],{},"Apps",[73,74,75,84,92,100,108],"tbody",{},[63,76,77,81],{},[78,79,80],"td",{},"Apps en ligne scannées et classées",[78,82,83],{},"30 998",[63,85,86,89],{},[78,87,88],{},"Nomment un projet Supabase dans la page",[78,90,91],{},"8 435",[63,93,94,97],{},[78,95,96],{},"Table confirmée et réponse obtenue",[78,98,99],{},"3 680",[63,101,102,105],{},[78,103,104],{},"Au moins une table lisible sans connexion",[78,106,107],{},"2 096",[63,109,110,113],{},[78,111,112],{},"…et l'une d'elles portait un nom de personnes",[78,114,115],{},"394",[117,118],"diagram",{"alt":119,"caption":120,"src":121},"Quatre barres mesurées sur le même total, chacune plus étroite que la précédente : 30 998 apps scannées, 8 435 utilisant Supabase, 3 680 où la vérification a pu aboutir, 2 096 avec une table lisible par tous. La colonne de droite indique 27 %, 44 % et 57 %, la part que chaque étape garde de l'étape au-dessus.","Chaque barre est mesurée sur le même total. Les 57 % sont une part des 3 680 apps que nous avons réellement pu vérifier, pas de toutes celles que nous avons scannées.","\u002Fblog\u002Fcan-anyone-read-your-supabase-database\u002Fwhat-we-measured-1600x700.png",[10,123,124],{},"Trois choses que nous n'avons pas faites. Chacune pousse le chiffre réel dans un\nsens ou dans l'autre, et mérite d'être dite plutôt qu'enterrée.",[10,126,127,130],{},[17,128,129],{},"Nous n'avons interrogé que des noms de tables visibles ou devinables.","\nSupabase ne laisse plus une clé publiable lister les tables d'un projet ; nous\navons donc lu les noms qu'une app mentionne dans son propre code et ajouté deux\ndouzaines de noms ordinaires, plafonnés à trente par app. Une app dont les\ntables portent un nom auquel nous n'avons pas pensé nous paraît propre et ne\nl'est peut-être pas.",[10,132,133,136],{},[17,134,135],{},"Nous avons compté des lignes, jamais lues."," Chaque sonde a demandé à la base\ncombien de lignes elle remettrait, et s'est arrêtée là. Les données de personne\nn'ont été téléchargées, et aucune app n'est nommée dans cet article ni dans quoi\nque ce soit que nous publions.",[10,138,139,142,143,147],{},[17,140,141],{},"Presque toutes les apps que nous avons pu vérifier étaient des apps Lovable.","\nElles constituent la plus grande part de ce que nous avons scanné et sont les\nplus susceptibles de nommer leur projet Supabase dans la page ; lisez donc ceci\ncomme une mesure des ",[38,144,146],{"href":145},"\u002Fis-your-lovable-app-safe","apps Lovable avec Supabase"," et\nnon de tous les builders. Là où la vérification n'a pas pu aller au bout, nous\navons enregistré qu'elle n'a pas abouti. Une app que nous n'avons pas pu\nvérifier est inconnue, pas propre.",[27,149,151],{"id":150},"une-table-ouverte-nest-pas-automatiquement-un-trou","Une table ouverte n'est pas automatiquement un trou",[10,153,154],{},"De l'extérieur, une table que tout le monde peut lire a exactement la même allure\nqu'elle contienne votre catalogue de produits ou vos clients. La réponse est la\nmême. Seul le nom diffère.",[117,156],{"alt":157,"caption":158,"src":159},"Deux trajets de requête identiques dessinés l'un au-dessus de l'autre. Les deux envoient un nom de table, les deux reçoivent une réponse 200, les deux récupèrent cinq lignes. Le trajet du haut porte le nom products et se termine par une coche verte ; celui du bas porte le nom profiles et se termine par une croix rouge.","Même requête, même réponse, verdicts opposés. Seule la personne qui a construit l'app sait lequel de ces deux cas est sa table ouverte.","\u002Fblog\u002Fcan-anyone-read-your-supabase-database\u002Fsame-answer-different-table-1600x600.png",[10,161,162,163,167,168,167,171,167,174,167,177,167,180,183],{},"C'est pourquoi nous coupons le constat en deux. Dans 394 de ces apps, l'une des\ntables lisibles portait un nom tiré d'une courte liste qui signifie pour nous des\npersonnes : ",[164,165,166],"code",{},"users",", ",[164,169,170],{},"profiles",[164,172,173],{},"customers",[164,175,176],{},"orders",[164,178,179],{},"messages",[164,181,182],{},"invoices",".\nC'est un inconnu qui lit vos clients, et cela se corrige aujourd'hui.",[10,185,186,187,190],{},"Les 1 702 autres, nous ne pouvons pas les juger de l'extérieur, et aucun autre\nscanner ne le peut non plus. Une table ",[164,188,189],{},"posts"," peut être un blog public ou des\nnotes privées. Vous savez laquelle. Personne qui regarde votre app depuis\ninternet ne le sait.",[10,192,193,194,198],{},"Si vous préférez ne pas deviner pour la vôtre, notre scan gratuit examine votre\nsite en ligne depuis l'extérieur et vous dit quelles tables ont répondu. Il prend\nune vingtaine de secondes et ne demande aucun compte :\n",[38,195,197],{"href":196},"\u002F#scan","scanner votre app",".",[27,200,202],{"id":201},"pourquoi-cela-arrive-à-des-apps-que-personne-na-ouvertes-exprès","Pourquoi cela arrive à des apps que personne n'a ouvertes exprès",[10,204,205],{},"Parce que le correctif qui remet une app cassée en marche est en général celui\nqui ouvre la table.",[10,207,208],{},"La séquence est la suivante. Row Level Security est activé, par vous ou par le\nbuilder. Votre app cesse aussitôt d'afficher des données, car activé sans règles\nsignifie que la base refuse tout le monde, vous compris. Vous collez l'erreur à\nvotre assistant, il écrit une politique autorisant chaque requête, et l'app\nrefonctionne. Ensuite, plus rien n'a l'air anormal.",[10,210,211,212,216],{},"Cette politique-là est celle que nous trouvons. Le tableau de bord signale la\ntable comme protégée, puisque l'interrupteur est activé et qu'une politique\nexiste. L'article sur\n",[38,213,215],{"href":214},"\u002Fblog\u002Fsupabase-rls-on-but-table-still-public","pourquoi Row Level Security activé ne veut pas dire protégé","\nparcourt les quatre états possibles d'une table et la façon de reconnaître le\nvôtre.",[27,218,220],{"id":219},"la-fuite-dont-on-vous-avertit-était-la-plus-rare","La fuite dont on vous avertit était la plus rare",[10,222,223],{},"Sur l'ensemble des 30 998 apps, une clé secrète Supabase posée dans le\nnavigateur (la clé qui ignore chaque règle que vous avez écrite) est apparue\n3 fois.",[10,225,226,227,230],{},"C'est la fuite dont les propriétaires d'app entendent parler sans arrêt, et\ncelle que nous avons trouvée le moins souvent. Elle est grave quand elle\nsurvient, et il\n",[38,228,229],{"href":40},"vaut la peine de savoir la repérer",",\nmais l'inquiétude dépensée là surveille une porte presque toujours fermée.\nL'ouverture ordinaire dans ces apps est une table banale sans aucune règle.",[27,232,234],{"id":233},"comment-vérifier-votre-propre-app","Comment vérifier votre propre app",[10,236,237],{},"Deux endroits où regarder dans votre base de données Supabase, et une façon de\nla voir depuis l'endroit où se tient un inconnu.",[10,239,240,243],{},[17,241,242],{},"Ouvrez le Security Advisor dans votre tableau de bord Supabase."," Il liste\nchaque table dont Row Level Security est désactivé, la version la plus nette de\nce problème. Supabase le signale bien, et si votre projet figure sur cette liste\nvous avez votre réponse sans lire une ligne de SQL.",[10,245,246,249],{},[17,247,248],{},"Lisez ensuite les politiques de toute table contenant des personnes."," Le\nSecurity Advisor ne peut pas décider si une politique permissive est\nintentionnelle, car pour un catalogue de produits elle serait correcte. Ouvrez\nla table, regardez la politique et voyez si elle nomme une condition ou si elle\nautorise tout le monde.",[10,251,252,255,256,258],{},[17,253,254],{},"Ou vérifiez-le de l'extérieur, là où vit le risque."," Un inconnu n'ouvre pas\nvotre tableau de bord. Notre scan gratuit envoie la même requête anonyme qu'une\npersonne extérieure et rapporte quelles tables ont répondu :\n",[38,257,197],{"href":196},", sans compte et sans installation.",[27,260,262],{"id":261},"que-faire-dune-table-qui-ne-devrait-pas-être-lisible","Que faire d'une table qui ne devrait pas être lisible",[264,265,266],"key-takeaways",{},[267,268,269,285,288,291,294],"ul",{},[270,271,272,273,167,275,167,277,167,279,281,282,284],"li",{},"Commencez par les tables qui contiennent des personnes. ",[164,274,166],{},[164,276,170],{},[164,278,173],{},[164,280,176],{}," et ",[164,283,179],{}," sont là où vivent les données de quelqu'un d'autre, et elles valent une soirée.",[270,286,287],{},"Écrivez la règle avant d'élargir quoi que ce soit d'autre. Une politique qui nomme une condition (cette ligne appartient à cet utilisateur connecté) est ce qui rend la clé publiable de votre app inoffensive là où elle est.",[270,289,290],{},"Vérifiez la politique, pas le bouton. Activé avec une règle qui autorise tout le monde a exactement la même allure, vu de l'extérieur, que désactivé, et votre tableau de bord affiche le premier cas comme protégé.",[270,292,293],{},"Laissez tranquilles les tables réellement publiques. Qu'une liste de produits ou un article publié soit lisible est correct, et le couper casse votre app sans rien gagner.",[270,295,296],{},"Après le changement, testez comme le ferait un inconnu. Que votre app affiche la bonne chose prouve ce que votre app demande, pas ce que votre base remettrait.",[10,298,299],{},"Vérifier cela une fois, c'est une soirée. Garder la réponse vraie le mois\nprochain, c'est la part qui ne tient pas dans une soirée, et c'est pour cela que\nnous avons construit Reeve Care. Il relance cette même vérification sur votre\napp à intervalles réguliers et vous écrit quand la réponse se dégrade, parce\nqu'une table fermée en mars et ouverte en juin, personne ne le remarque depuis\nl'intérieur de sa propre app.",[117,301],{"alt":302,"caption":303,"src":304},"Le logo Reeve Care à côté de deux rangées. Dans la rangée du haut, une bande de lignes de table est lue par une loupe et marquée d'une flèche de répétition. Dans celle du bas, une base de données située dans un cadre en pointillés est copiée vers un fichier à l'extérieur, avec une loupe à côté de la copie.","Les deux tâches : la vérification se relance à intervalles réguliers, et une copie de votre base quitte votre compte Supabase et est relue avant d'être comptée.","\u002Fblog\u002Fcan-anyone-read-your-supabase-database\u002Fcare-watch-and-backup-1600x520.png",[10,306,307,308,198],{},"Il conserve aussi ses propres sauvegardes de votre base de données Supabase,\nprises à intervalles réguliers, stockées hors de votre compte Supabase et relues\npour vérification avant d'être comptées, avec une restauration qui capture\nl'état actuel avant de rejouer quoi que ce soit. Cette seconde moitié compte ici\nparce que nous ne vérifions jamais que la lecture. La même politique permissive\npeut autoriser l'écriture, et un inconnu qui écrit dans votre table, c'est la\nversion qui la vide, et à ce moment-là, une copie d'avant est la seule chose qui\nremet les lignes en place. Care couvre votre base de données, et les\nfichiers téléversés dans Storage dès que vous les connectez, sur Supabase et non\nsur tous les types de base :\n",[38,309,311],{"href":310},"\u002F#pricing","ce qu'il surveille et ce qu'il coûte",[10,313,314,315,319,320,198],{},"Si vous préférez avancer par liste, la\n",[38,316,318],{"href":317},"\u002Fchecklist","checklist de sécurité en 10 minutes"," couvre ceci en même temps que\nles autres points à refermer dans une app fraîchement lancée. Et si une table est\nrestée ouverte un moment, ce que vous pourrez défaire ensuite dépend entièrement\nde ",[38,321,323],{"href":322},"\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database","ce que vous sauvegardiez",{"title":325,"searchDepth":326,"depth":326,"links":327},"",3,[328,330,331,332,333,334,335],{"id":29,"depth":329,"text":30},2,{"id":51,"depth":329,"text":52},{"id":150,"depth":329,"text":151},{"id":201,"depth":329,"text":202},{"id":219,"depth":329,"text":220},{"id":233,"depth":329,"text":234},{"id":261,"depth":329,"text":262},"Bases de la sécurité",null,"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.",false,"md",[342,345,348,351,354],{"q":343,"a":344},"Comment savoir si n'importe qui peut lire ma base de données Supabase ?","Deux vérifications règlent l'essentiel. Dans votre tableau de bord Supabase, ouvrez le Security Advisor : il liste chaque table dont Row Level Security est désactivé, et celles-là sont lisibles par quiconque détient la clé livrée dans votre app. Ouvrez ensuite les politiques de toute table contenant des personnes, car une table peut passer la première vérification et rester ouverte : une politique qui autorise tout le monde est activée, valide, et s'affiche comme protégée dans le tableau de bord. Si vous préférez le voir de l'extérieur, notre scan gratuit lit votre site en ligne comme le ferait un inconnu.",{"q":346,"a":347},"Est-ce grave qu'une de mes tables soit lisible par tout le monde ?","Cela dépend de la table, et vous êtes la seule personne à pouvoir en décider. Une liste de produits, d'articles publiés ou de lieux sur une carte est faite pour être lue par tous, et une politique qui l'autorise est correcte. Le même réglage sur une table d'utilisateurs, de commandes ou de messages signifie que des inconnus lisent vos clients. Demandez-vous si vous afficheriez le contenu de cette table sur une page publique, et laissez la réponse décider.",{"q":349,"a":350},"J'ai activé Row Level Security. Mes tables sont-elles protégées pour autant ?","Pas à elle seule. L'interrupteur et les règles sont deux choses distinctes : activé sans aucune règle bloque tout le monde, y compris votre propre app, et activé avec une règle permissive ne bloque personne. La règle écrite quand une app casse après l'activation de Row Level Security est en général celle qui autorise n'importe quelle requête de n'importe qui, ce qui remet l'app en marche et laisse la table ouverte. Lisez la politique de la table, pas le bouton.",{"q":352,"a":353},"Mon app a un écran de connexion. Cela ne tient-il pas les gens à l'écart de la base ?","Non. Votre écran de connexion décide de ce que votre app affiche. Il ne décide pas de ce que votre base de données remet, car une requête n'a pas besoin de venir de votre app : la clé que votre app transporte est lisible par n'importe quel visiteur et peut être utilisée directement contre votre base. Ce qui décide de la réponse, c'est Row Level Security sur chaque table.",{"q":355,"a":356},"Que faire en premier si je trouve une table que des inconnus peuvent lire ?","Corrigez la politique de cette table avant tout le reste, puis regardez ce qui était atteignable pendant qu'elle était ouverte. Commencez par les tables qui contiennent des personnes, puisque ce sont celles où se trouvent les données de quelqu'un d'autre. Si la table était ouverte et contient des données personnelles, vérifiez si vos règles locales vous obligent à prévenir quelqu'un ; c'est une question pour un juriste, pas pour un scanner.","\u002Fblog\u002Fcan-anyone-read-your-supabase-database\u002Fcard-800x500.png",[359,360,361,362,363],"qui peut lire ma base de données supabase","base de données supabase publique","table supabase lisible par tous","lovable supabase sécurité","supabase rls table exposée",{},true,"\u002Fblog\u002Fcan-anyone-read-your-supabase-database","2026-08-18",{"title":5,"description":338},"blog\u002Fcan-anyone-read-your-supabase-database",[371,372,373],"N'importe qui peut-il lire votre base de données Supabase sans se connecter ? Sur 2 096 des 3 680 apps où la vérification a pu aller au bout (57 %), au moins une table a répondu oui.","Ce n'est pas automatiquement une fuite. Certaines tables sont faites pour être publiques. Mais 394 de ces apps avaient une table ouverte au nom de personnes : users, profiles, customers, orders.","Ce dont on vous avertit sans cesse, une clé secrète posée dans l'app, est apparu 3 fois sur 30 998 apps. La table ouverte, elle, est le cas courant.","FeiqR_nG-024j9ma7WUyuS0uEBia8vw_X3qoVYB97tY",1787826048205]