[{"data":1,"prerenderedAt":929},["ShallowReactive",2],{"blog-fr-supabase-backup-auth-users":3,"blog-index-fr":580},{"id":4,"title":5,"body":6,"category":535,"cover":536,"coverAlt":537,"description":538,"draft":539,"extension":540,"faq":541,"image":558,"keywords":559,"meta":568,"navigation":569,"ogTitle":570,"path":571,"published":572,"seo":573,"stem":574,"tldr":575,"updated":572,"__hash__":579},"blog_fr\u002Fblog\u002Fsupabase-backup-auth-users.md","Pourquoi votre dump Supabase ne contient aucun utilisateur",{"type":7,"value":8,"toc":523},"minimark",[9,13,21,35,38,43,46,63,84,87,93,97,102,122,125,135,142,145,150,154,160,213,216,222,225,235,239,242,251,257,260,266,269,275,288,299,305,311,315,318,324,330,333,355,359,362,374,389,395,402,406,443,450,454,457,462,497,505,512],[10,11,12],"p",{},"Vous avez fait ce qu'il fallait. Vous avez cherché comment sauvegarder une base\nde données Supabase, lancé la commande trouvée et rangé le fichier en lieu sûr.",[10,14,15,16,20],{},"Puis un jour vous en avez besoin. Vous rejouez le fichier dans un projet neuf\net la restauration se termine sans une seule erreur. Chaque table que vous avez\ncréée est là, et chacune d'elles est vide. Vos utilisateurs sont encore plus mal\nlotis : la partie de la base où ils vivent, un schéma nommé ",[17,18,19],"code",{},"auth",", n'a jamais\natteint le fichier.",[10,22,23,24,31,32,34],{},"Voici la partie que presque tous les guides sautent : ",[25,26,27,30],"strong",{},[17,28,29],{},"supabase db dump"," tout\nseul n'est pas une copie de vos données."," Sans autre option, il écrit la forme\nde votre base et rien de son contenu, et il laisse ",[17,33,19],{}," de côté même là.\nSupabase publie la sauvegarde en trois commandes, et vos comptes voyagent dans\nla troisième.",[10,36,37],{},"Il aide de penser à un hôtel. Vos tables sont les chambres et tout ce qu'elles\ncontiennent. Le registre de la réception, celui où figure le nom de chaque\nclient, appartient à l'hôtel. Et un plan vous montre chaque chambre du bâtiment\nsans y mettre un seul client.",[39,40,42],"h2",{"id":41},"une-sauvegarde-supabase-contient-elle-mes-utilisateurs","Une sauvegarde Supabase contient-elle mes utilisateurs ?",[10,44,45],{},"Cela dépend de la commande qui a écrit le fichier, et la commande que lancent la\nplupart des gens ne les contient pas.",[10,47,48,49,51,52,55,56,59,60,62],{},"Vos utilisateurs ne sont pas des lignes de vos propres tables. Supabase les\ngarde dans un tiroir à part de la même base, le schéma ",[17,50,19],{},", avec leurs mots\nde passe hachés, les fournisseurs par lesquels ils se sont connectés et les\nsessions qu'ils tiennent. Vos tables à vous sont dans un tiroir nommé ",[17,53,54],{},"public",",\net chaque colonne ",[17,57,58],{},"user_id"," qui s'y trouve est une référence vers ",[17,61,19],{},".",[10,64,65,66,68,69,71,72,75,76,83],{},"Un schéma est exactement cela : un tiroir nommé à l'intérieur d'une base.\n",[17,67,54],{}," est le vôtre. ",[17,70,19],{}," est celui de Supabase, et ",[17,73,74],{},"storage"," aussi, qui\ngarde la ligne décrivant chaque fichier envoyé. La documentation de Supabase\nappelle ceux-là ses schémas gérés et dit qu'ils\n",[77,78,82],"a",{"href":79,"rel":80},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Flocal-development\u002Fcli-workflows",[81],"nofollow","n'ont normalement pas besoin d'être récupérés sauf si vous les avez modifiés",",\nce qui explique pourquoi l'outillage les traite autrement que vos tables.",[10,85,86],{},"Cette séparation est ce qui permet à une commande de produire deux fichiers qui\nse ressemblent et contiennent des choses entièrement différentes.",[88,89],"diagram",{"alt":90,"caption":91,"src":92},"Un fichier de dump dont la flèche atteint un panneau plein de quatre tables allumées, coché. Une seconde flèche s'arrête à un mur en pointillés devant un panneau en pointillés portant la marque Supabase, et ce panneau contient une fiche réglée listant trois personnes à côté de quatre images pâles. Une croix est posée sur le mur.","Lancée toute seule, la commande de dump copie la forme de votre propre tiroir et s'arrête à la frontière des deux que Supabase gère.","\u002Fblog\u002Fsupabase-backup-auth-users\u002Fwhere-the-dump-stops-1600x620.png",[39,94,96],{"id":95},"ce-que-la-commande-de-dump-écrit-toute-seule","Ce que la commande de dump écrit toute seule",[10,98,99,100,62],{},"Le plan. Aucune ligne, et rien de ",[17,101,19],{},[10,103,104,105,108,109,114,115,118,119,62],{},"La page de référence de Supabase pour la commande le dit en deux phrases. Elle\nlance ",[17,106,107],{},"pg_dump"," avec des options supplémentaires pour exclure les schémas gérés\npar Supabase, et les ignorés\n",[77,110,113],{"href":111,"rel":112},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Freference\u002Fcli\u002Fsupabase-db-dump",[81],"comprennent auth, storage et ceux créés par les extensions",".\nLa même page dit ensuite que le dump par défaut ne contient ni données ni rôles\npersonnalisés, et que vous les obtenez en les demandant avec ",[17,116,117],{},"--data-only"," et\n",[17,120,121],{},"--role-only",[10,123,124],{},"Donc ceci, qui est ce que vous avez sans doute lancé :",[126,127,132],"pre",{"className":128,"code":130,"language":131},[129],"language-text","supabase db dump --db-url \"postgresql:\u002F\u002F…your connection string…\" -f backup.sql\n","text",[17,133,130],{"__ignoreMap":134},"",[10,136,137,138,141],{},"produit un fichier rempli d'instructions ",[17,139,140],{},"CREATE TABLE",". Chaque colonne, chaque\nindex, chaque politique que vous avez écrite sur vos propres tables, et pas une\nseule ligne de quoi que ce soit.",[10,143,144],{},"La raison pour laquelle c'est pire qu'un fichier manifestement vide, c'est que\nça marche. Il n'a pas l'air petit non plus : chaque définition de table, chaque\nindex et chaque politique que vous avez écrits y figurent, ce qui pour une vraie\napplication fait beaucoup de texte. Une sauvegarde vide s'annonce toute seule.\nCelle-ci se restaure proprement, et la première chose qui vous dit le contraire\nest une page de connexion qu'aucun compte ne franchit.",[88,146],{"alt":147,"caption":148,"src":149},"Deux fichiers côte à côte. Celui de gauche est en pointillés et contient deux grilles de table vides à côté d'un contour vide là où devrait se tenir une fiche, et il est barré. Celui de droite contient les deux mêmes tables avec leurs lignes remplies et, à la place du contour vide, une fiche réglée listant trois personnes. Il est coché.","La même commande écrit les deux. Lequel vous tenez dépend d'une option, et tous les deux se restaurent sans erreur.","\u002Fblog\u002Fsupabase-backup-auth-users\u002Fthe-plan-and-the-contents-1600x620.png",[39,151,153],{"id":152},"comment-vérifier-le-dump-que-jai-déjà","Comment vérifier le dump que j'ai déjà ?",[10,155,156,157,159],{},"Ouvrez-le dans un éditeur de texte et cherchez ",[17,158,19],{},". Ce qui remonte range\nvotre fichier dans un de trois groupes.",[161,162,163,176,193],"ol",{},[164,165,166,169,170,172,173,175],"li",{},[25,167,168],{},"Aucune correspondance."," Le schéma ",[17,171,19],{}," n'est dans ce fichier sous aucune\nforme. C'est ce qu'écrit un ",[17,174,29],{}," tout court.",[164,177,178,192],{},[25,179,180,181,184,185,188,189,62],{},"Des correspondances, mais seulement dans des lignes commençant par\n",[17,182,183],{},"CREATE",", ",[17,186,187],{},"ALTER"," ou ",[17,190,191],{},"GRANT"," Vous avez le dessin du registre et personne\ndedans.",[164,194,195,208,209,212],{},[25,196,197,198,188,201,204,205],{},"Une ligne ",[17,199,200],{},"COPY \"auth\".\"users\"",[17,202,203],{},"COPY auth.users",", avec des lignes de\ndonnées en dessous jusqu'à une ligne contenant ",[17,206,207],{},"\\."," Ou une suite de lignes\ncommençant par ",[17,210,211],{},"INSERT INTO \"auth\".\"users\"",". Vos comptes sont dedans.",[10,214,215],{},"Si vous préférez le faire en ligne de commande, deux greps répondent à la même\nquestion :",[126,217,220],{"className":218,"code":219,"language":131},[129],"grep -c 'auth.*users' backup.sql\ngrep -n 'COPY .*auth.*users\\|INSERT INTO .*auth.*users' backup.sql\n",[17,221,219],{"__ignoreMap":134},[10,223,224],{},"Le premier dit si le schéma a atteint le fichier. Le second dit si les personnes\ny sont arrivées. Un zéro des deux, sur un fichier sur lequel vous comptiez, vaut\nmieux être découvert aujourd'hui qu'au matin où vous en avez besoin.",[10,226,227,228,230,231,62],{},"Cherchez ",[17,229,74],{}," pendant que vous y êtes, et lisez avec soin ce que vous\ntrouvez. Ces lignes sont la liste de vos fichiers envoyés, ce qui est autre\nchose que les fichiers, et\n",[77,232,234],{"href":233},"\u002Fblog\u002Fsupabase-storage-backup","aucune sauvegarde de base sur aucun plan ne contient ceux-là",[39,236,238],{"id":237},"comment-exporter-les-utilisateurs-auth-de-supabase","Comment exporter les utilisateurs auth de Supabase ?",[10,240,241],{},"Avec la commande de données, qui est une autre commande que celle qui écrit le\nschéma.",[10,243,244,245,250],{},"Le\n",[77,246,249],{"href":247,"rel":248},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fplatform\u002Fmigrating-within-supabase\u002Fbackup-restore",[81],"guide de sauvegarde et restauration","\nde Supabase publie la sauvegarde en trois fichiers, et il vaut la peine de les\nvoir ensemble parce que leur forme est la réponse :",[126,252,255],{"className":253,"code":254,"language":131},[129],"supabase db dump --db-url \"postgresql:\u002F\u002F…\" -f roles.sql --role-only\nsupabase db dump --db-url \"postgresql:\u002F\u002F…\" -f schema.sql\nsupabase db dump --db-url \"postgresql:\u002F\u002F…\" -f data.sql --use-copy --data-only \\\n  -x \"storage.buckets_vectors\" -x \"storage.vector_indexes\"\n",[17,256,254],{"__ignoreMap":134},[10,258,259],{},"La deuxième ligne est celle qui se lance toute seule. La troisième est celle où\nsont vos utilisateurs.",[10,261,262,263,265],{},"Ces deux faits ressemblent à une contradiction et n'en sont pas. La phrase de la\npage de référence de Supabase sur l'exclusion de ",[17,264,19],{}," décrit le dump de\nschéma, et le dump de données parcourt ce schéma lui aussi.",[10,267,268],{},"Si vous ne voulez que les comptes, nommez le schéma et vous obtenez ce tiroir\nseul :",[126,270,273],{"className":271,"code":272,"language":131},[129],"supabase db dump --db-url \"postgresql:\u002F\u002F…\" -f users.sql --data-only --use-copy --schema auth\n",[17,274,272],{"__ignoreMap":134},[10,276,277,284,285,287],{},[25,278,279,280,283],{},"Avant de vous fier à l'une de ces commandes, ajoutez ",[17,281,282],{},"--dry-run"," et lisez ce\nqui remonte."," Elle imprime la commande ",[17,286,107],{}," que l'outil s'apprête à lancer\nsans la lancer, donc vous voyez vous-même quels schémas sont inclus et lesquels\nsont exclus sur la version que vous avez installée. Lisez cette sortie une fois\net vous n'aurez plus jamais à croire cet article, ni aucun autre, ce qui compte\nparce que les options bougent bel et bien entre les versions et que le fichier a\nla même tête dans les deux cas.",[10,289,290,291,298],{},"Il y a aussi la voie directe, et\n",[77,292,294,295,297],{"href":293},"\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database","c'est à cela que sert un ",[17,296,107],{}," tout court"," :\nnommez les tiroirs que vous voulez et il les prend.",[126,300,303],{"className":301,"code":302,"language":131},[129],"pg_dump \"postgresql:\u002F\u002F…\" --schema public --schema auth --schema storage \\\n  --no-owner --file backup.sql\n",[17,304,302],{"__ignoreMap":134},[10,306,307,308,310],{},"Une chose à noter sur le fichier de schéma, parce qu'elle explique pourquoi tout\ncela est séparé. Un nouveau projet Supabase arrive avec un schéma ",[17,309,19],{}," déjà\nconstruit, dans la version que le service de connexion fait tourner aujourd'hui.\nY rejouer la version de votre ancien projet poserait un dessin plus vieux\npar-dessus un qui marche. Ce que vous voulez emporter, c'est le contenu du\nregistre, et c'est le fichier de données qui le tient.",[39,312,314],{"id":313},"ce-qui-casse-au-moment-de-remettre-les-utilisateurs","Ce qui casse au moment de remettre les utilisateurs",[10,316,317],{},"Deux choses, et Supabase documente les deux.",[10,319,320,323],{},[25,321,322],{},"Les triggers, qui peuvent chiffrer une colonne deux fois."," La commande de\nrestauration du guide de Supabase porte en son milieu une instruction facile à\nprendre pour du remplissage :",[126,325,328],{"className":326,"code":327,"language":131},[129],"psql \\\n  --single-transaction \\\n  --variable ON_ERROR_STOP=1 \\\n  --file roles.sql \\\n  --file schema.sql \\\n  --command 'SET session_replication_role = replica' \\\n  --file data.sql \\\n  --dbname \"postgresql:\u002F\u002F…\"\n",[17,329,327],{"__ignoreMap":134},[10,331,332],{},"Cette ligne du milieu coupe les triggers le temps de l'opération, et le guide\ndit qu'elle est là pour empêcher des colonnes d'être chiffrées une seconde fois\nà l'entrée. Rejouez un fichier de données sans elle et les mots de passe\narrivent déjà brouillés par un traitement qui leur avait déjà été appliqué, et\nrien ensuite ne le défait.",[10,334,335,338,339,342,343,346,347,350,351,354],{},[25,336,337],{},"La propriété et les droits, qui arrêtent le rejeu."," Un dump pris sur un\nprojet Supabase porte des lignes qui renvoient à des rôles auxquels le nouveau\nprojet ne vous laisse pas toucher. Les notes de dépannage du même guide disent\nde commenter toute ligne contenant ",[17,340,341],{},"ALTER ... OWNER TO \"supabase_admin\""," dans\n",[17,344,345],{},"schema.sql",", et une ligne précise ",[17,348,349],{},"GRANT \"postgres\" TO \"cli_login_postgres\"","\ndans ",[17,352,353],{},"roles.sql",". Les deux sont une modification de texte avant de commencer, et\nles deux arrêtent le rejeu avec la ligne sur laquelle il a buté affichée à\nl'écran.",[39,356,358],{"id":357},"mes-utilisateurs-devront-ils-se-reconnecter","Mes utilisateurs devront-ils se reconnecter ?",[10,360,361],{},"Leurs mots de passe passent. Leurs sessions non, sauf si vous emportez une chose\nde plus avec eux.",[10,363,364,365,367,368,373],{},"Supabase dit que vous pouvez migrer chaque table du schéma ",[17,366,19],{},",\n",[77,369,372],{"href":370,"rel":371},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Ftroubleshooting\u002Fmigrating-auth-users-between-projects",[81],"utilisateurs et mots de passe hachés compris",",\ndonc personne n'a à réinitialiser un mot de passe qu'il avait déjà. Aucun mot de\npasse n'est lisible à aucun moment là-dedans ; ce qui se déplace, c'est son\nhaché.",[10,375,376,377,380,381,384,385,62],{},"Une session est autre chose. Elle est prouvée par un jeton signé avec le secret\nJWT propre à votre projet, et chaque projet a le sien. Supabase dit que si le\nnouveau projet signe avec un autre secret, chaque jeton déjà présent dans le\nnavigateur de quelqu'un devient invalide et il lui est demandé de se reconnecter.\nVous pouvez éviter cela en posant le secret de l'ancien projet sur le nouveau, et\nle prix est écrit sur la même page : changer le secret JWT régénère les clés\n",[17,378,379],{},"anon"," et ",[17,382,383],{},"service_role"," de ce projet, donc il faut donner les nouvelles à votre\napplication avant qu'elle puisse parler à quoi que ce soit. Quelle clé est\nlaquelle, et laquelle a sa place dans votre application, c'est\n",[77,386,388],{"href":387},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","ce dont il faut être sûr avant d'en coller une",[10,390,391,392,394],{},"La version honnête est donc qu'une restauration demande le plus souvent à tout le\nmonde de se connecter une fois. C'est un courriel au support. Ce n'est pas un\ncompte perdu, et la différence entre les deux tient à ce que le schéma ",[17,393,19],{}," ait\nété dans votre fichier.",[10,396,397,398,401],{},"Trois choses n'y sont toujours pas, quoi que vous fassiez des options. Vos\nfichiers envoyés, parce que Storage garde les octets hors de la base et\n",[77,399,400],{"href":233},"aucun dump sur aucun plan ne les atteint",". Vos\nedge functions, qui sont un téléchargement à part et dont les import maps, note\nSupabase, ne sont pas récupérés automatiquement. Et les réglages de votre projet,\nqui sont de la configuration et non des données et se ressaisissent à la main.",[39,403,405],{"id":404},"ce-quil-faut-faire-cette-semaine","Ce qu'il faut faire cette semaine",[407,408,409],"key-takeaways",{},[410,411,412,418,427,433,440],"ul",{},[164,413,414,415,417],{},"Prenez le fichier de sauvegarde le plus récent que vous ayez et cherchez-y ",[17,416,19],{},". Groupe un, deux ou trois de la section ci-dessus, et vous saurez en une minute.",[164,419,420,421,380,423,426],{},"Si c'est le groupe un ou deux, prenez aujourd'hui un dump de données avec ",[17,422,117],{},[17,424,425],{},"--use-copy",", et gardez-le à côté du fichier de schéma au lieu de le remplacer. Il vous faut les deux.",[164,428,429,430,432],{},"Ajoutez ",[17,431,282],{}," à la commande que vous retenez et lisez la sortie une fois, pour savoir quels tiroirs votre version de l'outil emporte.",[164,434,435,436,439],{},"Notez l'ordre de la restauration là où vous le retrouverez : roles, puis schema, puis ",[17,437,438],{},"SET session_replication_role = replica",", puis data.",[164,441,442],{},"Restaurez une fois dans un projet jetable, puis essayez de vous connecter comme un vrai utilisateur. C'est la seule vérification qui teste ce dont parle cet article.",[10,444,445,446,449],{},"Le faire une fois à la main en vaut la peine quelle que soit la façon dont vous\nsauvegardez ensuite, parce que tant que vous n'avez pas ouvert un dump vous\nn'avez eu que le mot sauvegarde. Continuer à la main est une autre question, et\n",[77,447,448],{"href":293},"les trois voies et ce que chacune coûte","\nest l'endroit où on y répond.",[39,451,453],{"id":452},"où-reeve-care-trouve-sa-place","Où Reeve Care trouve sa place",[10,455,456],{},"Care prend la copie selon un calendrier, et le registre est dedans.",[88,458],{"alt":459,"caption":460,"src":461},"Un panneau Reeve Care à deux rangées. Dans la première, un contour de compte en pointillés contient une base de données et un registre de personnes, et les deux en sortent par une flèche vers un fichier verrouillé relu à la loupe et coché. Dans la seconde, une carte portant un bouton renvoie les lignes de la base dans le compte tandis que le registre à l'intérieur reste allumé et intact.","La copie tient vos tables et vos comptes. Le bouton de restauration remet vos tables et laisse les comptes là où ils sont.","\u002Fblog\u002Fsupabase-backup-auth-users\u002Fcare-the-register-comes-too-1600x560.png",[410,463,464,475,485,491],{},[164,465,466,169,469,471,472,474],{},[25,467,468],{},"Vos comptes sont dans la copie.",[17,470,19],{}," voyage avec vos propres tables, parce qu'une copie d'une application Supabase sans ses utilisateurs est une copie de la moitié. Les lignes ",[17,473,74],{}," qui décrivent vos fichiers viennent aussi, et les fichiers eux-mêmes dès que vous connectez un identifiant Storage.",[164,476,477,480,481,484],{},[25,478,479],{},"Le bouton de restauration remet vos tables et laisse les comptes tranquilles."," Rejouer ",[17,482,483],{},"auth.users"," sur un projet vivant déconnecte tout le monde et ramène des comptes que quelqu'un avait supprimés exprès, donc cela reste une demande avec une personne dessus. Appuyer sur le bouton dans la panique ne peut donc pas déconnecter les clients que vous vouliez aider.",[164,486,487,490],{},[25,488,489],{},"La copie est relue avant de compter comme prise."," La date sur votre tableau de bord est la dernière fois qu'une copie a été ouverte et vérifiée, jamais le moment où un travail a démarré ou un fichier est arrivé.",[164,492,493,496],{},[25,494,495],{},"Une restauration prend d'abord un instantané de l'état actuel",", donc la restauration elle-même a une annulation.",[10,498,499,500,504],{},"Care commence à €49 par mois pour une application. C'est un prix de liste, et la\n",[77,501,503],{"href":502},"\u002Fpricing","page des tarifs"," est parfois en dessous du chiffre indiqué ici et\njamais au-dessus.",[10,506,507,508,62],{},"Comment une copie est prise, vérifiée et remise est dessiné étape par étape sur\nla ",[77,509,511],{"href":510},"\u002Fsupabase-backups","page des sauvegardes Supabase",[10,513,514,515,517,518,522],{},"Avant de fermer cet onglet, ouvrez votre dump le plus récent et cherchez-y\n",[17,516,19],{},". C'est le moyen le plus rapide de savoir si ce que vous appeliez une\nsauvegarde vous rendrait vos clients, et si la réponse est non,\n",[77,519,521],{"href":520},"\u002Fblog\u002Fhow-to-restore-a-supabase-backup","en restaurer une correctement"," est la\nprochaine lecture.",{"title":134,"searchDepth":524,"depth":524,"links":525},3,[526,528,529,530,531,532,533,534],{"id":41,"depth":527,"text":42},2,{"id":95,"depth":527,"text":96},{"id":152,"depth":527,"text":153},{"id":237,"depth":527,"text":238},{"id":313,"depth":527,"text":314},{"id":357,"depth":527,"text":358},{"id":404,"depth":527,"text":405},{"id":452,"depth":527,"text":453},"Backups","\u002Fblog\u002Fsupabase-backup-auth-users\u002Fcover-1200x630.png","Un fichier scellé contenant trois lignes de données, et à côté un registre réglé de personnes resté dehors et coupé par le bord du cadre.","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.",false,"md",[542,544,547,549,552,555],{"q":42,"a":543},"Cela dépend de la commande qui a écrit le fichier. Vos utilisateurs vivent dans un schéma nommé auth, qui appartient au service de connexion. Un supabase db dump tout court laisse auth de côté et ne contient aucune ligne de quoi que ce soit, parce que le dump par défaut se limite au schéma. La moitié données du dump, une deuxième commande avec l'option --data-only, est celle qui porte vos utilisateurs. C'est exactement pour cela que Supabase publie la sauvegarde en trois commandes.",{"q":545,"a":546},"Pourquoi auth.users manque-t-il dans mon dump ?","Parce que vous avez presque sûrement lancé le dump de schéma. Supabase documente que la commande exclut ses schémas gérés, que auth et storage font partie des ignorés, et que le dump par défaut ne contient aucune donnée. C'est délibéré : un nouveau projet arrive avec son propre schéma auth déjà construit par le service de connexion, donc y rejouer une copie plus ancienne remplacerait quelque chose qui marche. Ce que vous voulez déplacer, c'est le contenu, et c'est le dump de données qui le porte.",{"q":238,"a":548},"Avec la commande de données, qui est séparée de la commande de schéma. Lancez supabase db dump avec --data-only et --use-copy pour écrire un fichier de données, et les tables de auth viennent avec. Si vous ne voulez que les comptes, ajoutez --schema auth et vous obtenez un fichier contenant ce seul schéma. Avant de vous fier à l'une ou à l'autre, ajoutez --dry-run : elle imprime la commande pg_dump que la CLI va lancer sans la lancer, donc vous lisez quels schémas sont inclus sur la version que vous avez.",{"q":550,"a":551},"Les mots de passe survivent-ils à une restauration Supabase ?","Oui, si le schéma auth était dans le fichier. Supabase dit que vous pouvez migrer chaque table du schéma auth, mots de passe hachés compris, donc personne n'a à les réinitialiser ni à les recréer. La seule chose qui peut les ruiner, c'est de rejouer les données sans avoir désactivé les triggers, et c'est pour cela que Supabase place SET session_replication_role = replica au milieu de sa propre commande de restauration. Sautez cette ligne et une colonne déjà chiffrée se fait chiffrer une seconde fois à l'entrée.",{"q":553,"a":554},"Mes utilisateurs resteront-ils connectés après une restauration ?","Pas si le nouveau projet signe avec un autre secret. Une session est prouvée par un jeton signé avec le secret JWT du projet, et Supabase dit qu'un nouveau secret rend les jetons existants invalides, donc il est demandé à tout le monde de se reconnecter. Vous pouvez emporter l'ancien secret et les garder connectés, mais Supabase dit aussi que changer le secret JWT régénère les clés anon et service_role de ce projet, donc votre application a besoin des nouvelles.",{"q":556,"a":557},"Qu'est-ce qu'un dump Supabase laisse encore de côté ?","Vos fichiers envoyés, d'abord. Storage garde une ligne dans votre base pour chaque fichier et le fichier lui-même ailleurs, donc aucun dump de base de données sur aucun plan ne contient les octets. Les edge functions sont un téléchargement à part, et Supabase note que les import maps et les fichiers deno.json ne sont pas récupérés automatiquement. Les réglages du projet, les fournisseurs auth et les secrets sont de la configuration et non des données et vivent dans le tableau de bord, donc ils se ressaisissent à la main dans un nouveau projet.","\u002Fblog\u002Fsupabase-backup-auth-users\u002Fcard-800x500.png",[560,561,562,563,564,565,566,567],"supabase backup auth users","exporter les utilisateurs supabase","supabase db dump schéma auth","migrer les utilisateurs auth supabase","sauvegarde supabase sans utilisateurs","supabase auth.users export","restaurer les utilisateurs supabase","supabase dump exclut auth",{},true,"Pourquoi votre dump Supabase est vide de ses utilisateurs","\u002Fblog\u002Fsupabase-backup-auth-users","2026-09-23",{"title":5,"description":538},"blog\u002Fsupabase-backup-auth-users",[576,577,578],"Supabase publie sa sauvegarde en trois commandes. Celle que vous avez sans doute lancée est la deuxième, et vos utilisateurs sont dans la troisième.","Lancez supabase db dump sans autre option et vous obtenez la forme de vos tables et rien de leur contenu, et le schéma auth où vivent vos utilisateurs est laissé de côté même là.","Une seule recherche dans le fichier que vous avez déjà vous dit laquelle de trois choses vous tenez.","lEo3QChSjcIB-pWLBxXlrgThDFi5QqeDyA3xBBvZ_7I",[581,588,594,600,606,612,618,624,630,636,642,648,654,660,666,672,677,683,689,690,696,702,708,714,720,726,732,738,743,749,755,761,767,773,779,785,791,797,803,809,815,821,827,833,839,845,851,857,863,868,874,880,886,892,897,903,909,915,920,925],{"path":582,"title":583,"description":584,"published":585,"category":586,"image":587,"draft":539},"\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","Bases de la sécurité","\u002Fblog\u002Fbase44-security-scan\u002Fcard-800x500.png",{"path":589,"title":590,"description":591,"published":592,"category":586,"image":593,"draft":539},"\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":595,"title":596,"description":597,"published":598,"category":586,"image":599,"draft":539},"\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":601,"title":602,"description":603,"published":604,"category":586,"image":605,"draft":539},"\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":607,"title":608,"description":609,"published":610,"category":586,"image":611,"draft":539},"\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":613,"title":614,"description":615,"published":616,"category":586,"image":617,"draft":539},"\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":619,"title":620,"description":621,"published":622,"category":586,"image":623,"draft":539},"\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":625,"title":626,"description":627,"published":628,"category":586,"image":629,"draft":539},"\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":631,"title":632,"description":633,"published":634,"category":586,"image":635,"draft":539},"\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":637,"title":638,"description":639,"published":640,"category":586,"image":641,"draft":539},"\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":643,"title":644,"description":645,"published":646,"category":586,"image":647,"draft":539},"\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":649,"title":650,"description":651,"published":652,"category":586,"image":653,"draft":539},"\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":655,"title":656,"description":657,"published":658,"category":535,"image":659,"draft":539},"\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","\u002Fblog\u002Ftest-your-supabase-backup\u002Fcard-800x500.png",{"path":661,"title":662,"description":663,"published":664,"category":535,"image":665,"draft":539},"\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":667,"title":668,"description":669,"published":670,"category":535,"image":671,"draft":539},"\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":673,"title":674,"description":675,"published":670,"category":586,"image":676,"draft":539},"\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":678,"title":679,"description":680,"published":681,"category":586,"image":682,"draft":539},"\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":684,"title":685,"description":686,"published":687,"category":586,"image":688,"draft":539},"\u002Fblog\u002Flovable-security-scan","Scan de sécurité Lovable : ce qu’il ne peut pas prouver","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.","2026-09-24","\u002Fblog\u002Flovable-security-scan\u002Fcard-800x500.png",{"path":571,"title":5,"description":538,"published":572,"category":535,"image":558,"draft":539},{"path":691,"title":692,"description":693,"published":694,"category":586,"image":695,"draft":539},"\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":697,"title":698,"description":699,"published":700,"category":586,"image":701,"draft":539},"\u002Fblog\u002Fis-lovable-safe","Lovable est-il sûr ? Ce que 18 554 applications Lovable ont montré","Lovable est-il sûr ? 18 554 applications, neuf vérifications. La plateforme était la plus propre des cinq. Les trouvailles étaient dans les applications.","2026-09-21","\u002Fblog\u002Fis-lovable-safe\u002Fcard-800x500.png",{"path":703,"title":704,"description":705,"published":706,"category":586,"image":707,"draft":539},"\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":709,"title":710,"description":711,"published":712,"category":586,"image":713,"draft":539},"\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":715,"title":716,"description":717,"published":718,"category":586,"image":719,"draft":539},"\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":721,"title":722,"description":723,"published":724,"category":586,"image":725,"draft":539},"\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":727,"title":728,"description":729,"published":730,"category":586,"image":731,"draft":539},"\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":733,"title":734,"description":735,"published":736,"category":586,"image":737,"draft":539},"\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":233,"title":739,"description":740,"published":741,"category":535,"image":742,"draft":539},"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":744,"title":745,"description":746,"published":747,"category":535,"image":748,"draft":539},"\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":750,"title":751,"description":752,"published":753,"category":535,"image":754,"draft":539},"\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":756,"title":757,"description":758,"published":759,"category":586,"image":760,"draft":539},"\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":762,"title":763,"description":764,"published":765,"category":586,"image":766,"draft":539},"\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":768,"title":769,"description":770,"published":771,"category":586,"image":772,"draft":539},"\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":774,"title":775,"description":776,"published":777,"category":586,"image":778,"draft":539},"\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":780,"title":781,"description":782,"published":783,"category":586,"image":784,"draft":539},"\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":786,"title":787,"description":788,"published":789,"category":586,"image":790,"draft":539},"\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":792,"title":793,"description":794,"published":795,"category":586,"image":796,"draft":539},"\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":798,"title":799,"description":800,"published":801,"category":586,"image":802,"draft":539},"\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":804,"title":805,"description":806,"published":807,"category":586,"image":808,"draft":539},"\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":810,"title":811,"description":812,"published":813,"category":586,"image":814,"draft":539},"\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":816,"title":817,"description":818,"published":819,"category":535,"image":820,"draft":539},"\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":822,"title":823,"description":824,"published":825,"category":586,"image":826,"draft":539},"\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":828,"title":829,"description":830,"published":831,"category":535,"image":832,"draft":539},"\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":834,"title":835,"description":836,"published":837,"category":586,"image":838,"draft":539},"\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":840,"title":841,"description":842,"published":843,"category":586,"image":844,"draft":539},"\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":846,"title":847,"description":848,"published":849,"category":586,"image":850,"draft":539},"\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":852,"title":853,"description":854,"published":855,"category":586,"image":856,"draft":539},"\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":858,"title":859,"description":860,"published":861,"category":535,"image":862,"draft":539},"\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":520,"title":864,"description":865,"published":866,"category":535,"image":867,"draft":539},"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":869,"title":870,"description":871,"published":872,"category":586,"image":873,"draft":539},"\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":875,"title":876,"description":877,"published":878,"category":586,"image":879,"draft":539},"\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":881,"title":882,"description":883,"published":884,"category":535,"image":885,"draft":539},"\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":887,"title":888,"description":889,"published":890,"category":586,"image":891,"draft":539},"\u002Fblog\u002Fcan-anyone-read-your-supabase-database","Qui peut lire votre base Supabase ? Nous avons testé 3 680 apps","N'importe qui peut-il lire votre base de données Supabase sans se connecter ? Nous avons scanné 30 998 apps en ligne créées avec des builders IA.","2026-08-18","\u002Fblog\u002Fcan-anyone-read-your-supabase-database\u002Fcard-800x500.png",{"path":893,"title":894,"description":895,"published":890,"category":586,"image":896,"draft":539},"\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":898,"title":899,"description":900,"published":901,"category":586,"image":902,"draft":539},"\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":904,"title":905,"description":906,"published":907,"category":535,"image":908,"draft":539},"\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":910,"title":911,"description":912,"published":913,"category":586,"image":914,"draft":539},"\u002Fblog\u002Fsupabase-rls-on-but-table-still-public","Supabase Row Level Security est activé. La table reste publique.","Activer Supabase Row Level Security ne protège pas une table. Ce sont vos politiques, et celle qui a réparé votre app laisse peut-être entrer tout le monde.","2026-08-10","\u002Fblog\u002Fsupabase-rls-on-but-table-still-public\u002Fcard-800x500.png",{"path":916,"title":917,"description":918,"published":913,"category":535,"image":919,"draft":539},"\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":293,"title":921,"description":922,"published":923,"category":535,"image":924,"draft":539},"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":387,"title":926,"description":927,"published":923,"category":586,"image":928,"draft":539},"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",1791618969102]