[{"data":1,"prerenderedAt":784},["ShallowReactive",2],{"blog-de-base44-source-maps":3,"blog-index-de":542},{"id":4,"title":5,"body":6,"category":500,"cover":501,"coverAlt":502,"description":503,"draft":504,"extension":505,"faq":506,"image":522,"keywords":523,"meta":531,"navigation":532,"ogTitle":5,"path":533,"published":534,"seo":535,"stem":536,"tldr":537,"updated":534,"__hash__":541},"blog_de\u002Fblog\u002Fbase44-source-maps.md","Base44-Sicherheit: was ein Scan meldet und was du ändern kannst",{"type":7,"value":8,"toc":489},"minimark",[9,13,21,24,29,32,41,170,173,176,179,183,186,198,206,212,215,218,221,229,233,236,243,251,258,266,270,273,289,295,305,310,314,317,344,347,430,434,467,470,477],[10,11,12],"p",{},"Du hast deine Base44-App gescannt, und der Bericht kam mit einem B zurück, mit\ndrei gelben Zeilen darunter: Sicherheitsheader fehlen, eine API ist für jede\nWebsite offen, und dein Originalquellcode ist veröffentlicht. Oder jemand mit\nTechnikwissen hat für dich nachgesehen und dieselben drei Dinge in besorgterem\nTon gesagt. Bei einer App, deren Code du nie gelesen hast, trifft die letzte\nZeile am härtesten.",[10,14,15,16,20],{},"Hier ist der Teil, den Ratgeber um Ratgeber zur Base44-Sicherheit falsch\nmacht: ",[17,18,19],"strong",{},"Fast jede Zeile in diesem Bericht handelt von Base44."," Drei der vier\nBefunde, die auf fast jeder App auftauchen, werden von der Plattform gesetzt,\nfür jede App, die sie hostet. Und einer der drei ist ein Satz, den unser\neigener Scan falsch formuliert. Dieser Beitrag existiert, weil wir zurückgegangen\nsind und gelesen haben, was er gefunden hatte.",[10,22,23],{},"Stell dir deine App als Wohnung in einem Haus vor, das Base44 gehört. Ein Scan\nliest das Haus von der Straße aus. Das Schloss an der Haustür, das Schild\ndarüber, die Regel, wer durch die Fenster schauen darf: Das hat der Vermieter\nentschieden, und jede Wohnung teilt es. Was du hineingetragen hast, ist eine\nkürzere Liste, und der Rest dieses Beitrags geht den Bericht Zeile für Zeile\ndurch und sagt, was wohin gehört.",[25,26,28],"h2",{"id":27},"was-ein-base44-sicherheitsscan-auf-fast-jeder-app-findet","Was ein Base44-Sicherheitsscan auf fast jeder App findet",[10,30,31],{},"Drei Befunde auf fast jeder App, ein vierter auf etwa der Hälfte, und alle vier\nvon Base44 entschieden.",[10,33,34,35,40],{},"Im August 2026 haben wir\n",[36,37,39],"a",{"href":38},"\u002Fresearch\u002Fvibe-coded-app-security-2026","dieselben neun Checks"," auf 30.998\nlaufenden Vibe-Coding-Apps ausgeführt, 5.438 davon auf Base44 veröffentlicht.\nAllen 5.438 fehlten Sicherheitsheader. 5.417 beantworteten eine Anfrage von\neiner erfundenen Website mit einem CORS-Wildcard-Header. 3.229 davon, 59 %,\nlieferten eine Source Map aus. 2.705 hatten eine Adresse, im eigenen Code der\nApp benannt, die eine Anfrage ohne Anmeldung beantwortete und Daten zurückgab.",[42,43,44,69],"table",{},[45,46,47],"thead",{},[48,49,50,54,57,60,63,66],"tr",{},[51,52,53],"th",{},"Builder",[51,55,56],{},"Apps",[51,58,59],{},"Source Map veröffentlicht",[51,61,62],{},"CORS-Befund",[51,64,65],{},"Ein Schlüssel im Bundle",[51,67,68],{},"Note D oder F",[70,71,72,93,113,133,153],"tbody",{},[48,73,74,78,81,84,87,90],{},[75,76,77],"td",{},"Base44",[75,79,80],{},"5.438",[75,82,83],{},"3.229 (59 %)",[75,85,86],{},"5.418 (99 %)",[75,88,89],{},"103 (2 %)",[75,91,92],{},"2",[48,94,95,98,101,104,107,110],{},[75,96,97],{},"Lovable",[75,99,100],{},"18.554",[75,102,103],{},"225 (1 %)",[75,105,106],{},"8 (unter 1 %)",[75,108,109],{},"822 (4 %)",[75,111,112],{},"407",[48,114,115,118,121,124,127,130],{},[75,116,117],{},"Replit",[75,119,120],{},"3.042",[75,122,123],{},"168 (6 %)",[75,125,126],{},"1.129 (37 %)",[75,128,129],{},"219 (7 %)",[75,131,132],{},"9",[48,134,135,138,141,144,147,150],{},[75,136,137],{},"Bolt",[75,139,140],{},"1.123",[75,142,143],{},"13 (1 %)",[75,145,146],{},"5 (unter 1 %)",[75,148,149],{},"75 (7 %)",[75,151,152],{},"15",[48,154,155,158,161,164,166,168],{},[75,156,157],{},"v0",[75,159,160],{},"1.790",[75,162,163],{},"0",[75,165,163],{},[75,167,163],{},[75,169,163],{},[10,171,172],{},"Jeder Prozentwert bezieht sich auf die Apps, bei denen der jeweilige Check eine\nAntwort bekam, weshalb die Grundgesamtheiten leicht von den App-Zahlen\nabweichen. Ein Check, der eine App nicht erreichen konnte, lässt diese App\nweg. Sie zählt nie als sauber.",[10,174,175],{},"Lies die Base44-Zeile gegen die Lovable-Zeile. Bei Lovable tauchen die ersten\nbeiden Befunde fast nie auf, weil das Hosting von Lovable beides andersherum\nsetzt. Bei Base44 tauchen sie fast jedes Mal auf. Eine Spalte, die über\nTausende Apps so einheitlich ist, deren Besitzer nie miteinander gesprochen\nhaben, ist das, wonach eine Plattformeinstellung von außen aussieht. Niemand\nhat sie in der eigenen App gewählt.",[10,177,178],{},"Die letzten beiden Spalten werden in jeder App selbst entschieden, und sie\nerzählen die andere Hälfte. Ein Schlüssel im komprimierten Code tauchte bei\n2 % der Base44-Apps auf, gegenüber 4 % der Lovable-Apps, und 2 Base44-Apps von\n5.438 bekamen ein D, gegenüber 407 Lovable-Apps von 18.554. Beide Base44-Apps\nkommen im letzten Abschnitt vor.",[25,180,182],{"id":181},"der-source-map-befund-bei-einer-base44-app-ist-das-badge","Der Source-Map-Befund bei einer Base44-App ist das Badge",[10,184,185],{},"Jede Source Map, die bei den erneut geöffneten Base44-Apps antwortete, gehörte\nzum Badge-Skript von Base44. Keine davon enthielt den Code des Besitzers.",[10,187,188,189,192,193,197],{},"Eine ",[17,190,191],{},"Source Map"," ist eine Datei, die ein Build-Werkzeug neben das\nkomprimierte JavaScript legt, das deine Website ausliefert. Sie enthält die\nOriginaldateien, ihre Namen und jeden Kommentar, damit ein Fehler auf die Zeile\nzeigen kann, die du geschrieben hast, statt auf Zeichen 48.000 einer einzigen\nriesigen Zeile. Ist die Map veröffentlicht, liest jeder, der F12 drückt, das\nProjekt so, wie es im Editor aussah, und\n",[36,194,196],{"href":195},"\u002Fblog\u002Fsource-maps-exposed-in-production","unser früherer Beitrag"," beschreibt,\nwas das bei einer App kostet, deren Map deine eigene ist.",[10,199,200,201,205],{},"Bei Base44 gehört die Map jemand anderem. Am 16. September 2026 sind wir zu 30\nApps zurückgegangen, die unser August-Scan markiert hatte, und haben gelesen,\nwas jede Map enthielt. Bei 27 davon war die einzige Map, die antwortete,\n",[202,203,204],"code",{},"\u002Fstatic\u002Fjs\u002Fbadge.js.map",", die Map des kleinen Skripts, das das Badge von\nBase44 auf die Seite zeichnet, und was sie preisgibt, ist der Code von Base44\nfür dieses Badge. Bei den übrigen 3 antwortete gar keine Map. Bei keiner der 30\ndeckte eine Map die Dateien des Besitzers ab. Diese Dateien gingen bei jeder\nApp, die wir geöffnet haben, komprimiert und ohne Map raus, die erste Datei,\ndie die Seite lädt, und jedes Stück, das sie danach lädt.",[207,208],"diagram",{"alt":209,"caption":210,"src":211},"Zwei Tafeln. Links, unter dem Base44-Logo, haben die eigenen Skriptdateien der App je einen gestrichelten Ring dort, wo eine Map wäre, und nur das Badge-Skript hat eine Map, die zu einem kleinen Base44-Logo führt. Rechts, unter dem Lovable-Logo, hat das Hauptskript der App eine Map, und die Map öffnet sich zu einem Ordner mit lesbaren Dateien.","Bei einer Base44-App gehört die einzige Map, die antwortet, zum Badge-Skript, und sie enthält den Code von Base44. Bei einer Lovable-App ist die Map die eigenen Dateien des Besitzers.","\u002Fblog\u002Fbase44-source-maps\u002Fwhose-map-answers-1600x720.png",[10,213,214],{},"Die 59 % zählen also etwas anderes als veröffentlichten Code. Von den 30\nmarkierten Apps tragen 27 der 28, die antworteten, das Badge-Skript noch immer\nin ihrer Seite, und von 30 Apps, die nie markiert wurden, tun es 29 nicht. Die\nZahl, die sich wie „drei von fünf Base44-Apps veröffentlichen ihren Code“\nliest, ist näher an „drei von fünf Base44-Apps zeigen das Badge“.",[10,216,217],{},"Damit bleibt eine Zeile in unserem eigenen Bericht, für die wir geradestehen\nmüssen. Sie lautet „Dein Originalquellcode ist veröffentlicht“, und bei einer\nBase44-App stimmt sie für eine Datei und ist falsch für deine App. Der Check hat\ngetan, wofür er gebaut wurde: der Adresse am Ende eines Skripts folgen und eine\nMap zählen, die antwortet. Hier gehört das Skript dem Vermieter. Bei Lovable,\nReplit und Bolt bedeutet dieselbe Zeile, was sie sagt. Von 11 markierten Apps\ndieser Builder, die wir erneut geöffnet haben, lieferten 9 eine Map der eigenen\nSeiten und Komponenten des Besitzers, und bei den anderen 2 antwortete keine\nMap mehr.",[10,219,220],{},"Für dich bedeutet das, dass nichts von dir in dieser Map steckt. Der Check, der\nsich lohnt, ist der andere: ob etwas, das du in die App eingefügt hast, in der\nkomprimierten Datei sitzt, die jeder Besucher ohnehin bekommt. Das kommt\nweiter unten.",[10,222,223,224,228],{},"Unser kostenloser Scan liest deine laufende Base44-App von außen, alle neun\nChecks, in etwa 20 Sekunden und ohne Konto, und schreibt „Konnte nicht prüfen“\nfür alles, was er nicht beantworten konnte, statt eines Häkchens:\n",[36,225,227],{"href":226},"\u002Fsecurity-scanner","App scannen",".",[25,230,232],{"id":231},"das-cors-wildcard-base44-setzt-es-und-dahinter-antwortet-nichts-privates","Das CORS-Wildcard: Base44 setzt es, und dahinter antwortet nichts Privates",[10,234,235],{},"Du kannst es nicht ändern, und bei den Base44-Apps, die wir angesehen haben,\nliegen keine privaten Daten dahinter.",[10,237,238,239,242],{},"Der Befund ist eine Zeile in den Antworten deines Servers,\n",[202,240,241],{},"Access-Control-Allow-Origin: *",", die dem Browser eines Besuchers sagt, dass\neine Seite auf jeder beliebigen anderen Website diese Antwort lesen darf. Die\nDokumentation von Base44 sagt, woher sie kommt (gelesen am 16. September 2026):\n„Per-app CORS configuration is not currently available. Base44 manages CORS at\nthe platform level.“ Jede App auf der Plattform sendet sie, und so kamen 5.417\nvon 5.419 Apps zu ein und demselben Befund.",[10,244,245,246,250],{},"Ob ein Wildcard eine Rolle spielt, hängt davon ab, was dahinter antwortet, und\n",[36,247,249],{"href":248},"\u002Fblog\u002Fcors-wildcard-security-risk","der längere Beitrag"," erklärt, warum. Die\nKurzfassung: Der Header kommt an, nachdem die Antwort bereits gesendet wurde,\nund nur ein Browser liest ihn, also würde ein engerer Header die Seiten anderer\nWebsites daran hindern, deine App zu lesen, und sonst niemanden. Was bei einer\nBase44-App dahinter liegt, ist die App selbst, die Seite, der komprimierte\nCode, das Badge, und all das lädt jeder Besucher ohnehin herunter.",[10,252,253,254,257],{},"Der vierte Befund ist der Ort, an dem ein Wildcard eine Rolle spielen würde.\nBei 2.705 Base44-Apps, etwa der Hälfte, beantwortete eine im Code der App\nbenannte Adresse eine Anfrage ohne Anmeldung und gab Daten zurück. Wir haben\nam 16. September 12 davon erneut geöffnet. Bei sechs antwortete nichts mehr.\nBei den anderen sechs war die antwortende Adresse jedes Mal dieselbe,\n",[202,255,256],{},"\u002Fapi\u002Fconsent\u002Fconfig",", und was sie zurückgibt, sind die\nCookie-Einwilligungseinstellungen der App: ob ein Einwilligungsbanner an ist,\nwelche Regionsregeln gelten, wie viele Monate die Antwort gemerkt wird. Das ist\nKonfiguration. Zeilen von irgendjemandem stecken nicht darin.",[10,259,260,261,265],{},"Deine Daten reisen bei Base44 nicht auf diesem Weg. Deine App fragt das Backend\nvon Base44, das Backend wendet die Berechtigungsregeln an, die du auf jeder\nTabelle gesetzt hast, und die Antwort kommt durch dieselbe Tür zurück. Ein Scan\nvon außen kann diese Regeln überhaupt nicht sehen, weshalb der\n",[36,262,264],{"href":263},"\u002Fis-your-base44-app-safe","Base44-Leitfaden"," seine Zeit darauf verwendet, was\nein Fremder erreichen kann, und deine Regeln dir überlässt.",[25,267,269],{"id":268},"was-bei-einer-base44-app-dir-gehört","Was bei einer Base44-App dir gehört",[10,271,272],{},"Eine kurze Liste, und beide D-Noten im Sweep kamen daraus.",[10,274,275,278,279,283,284,288],{},[17,276,277],{},"Ein Schlüssel, den du eingefügt hast."," 103 der 5.438 Base44-Apps, 2 %,\nlieferten etwas Schlüsselförmiges in dem Code aus, den jeder Besucher\nherunterlädt. 95 davon waren Google-API-Schlüssel, die\n",[36,280,282],{"href":281},"\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend","meist eine Einschränkung in Google Cloud brauchen","\nund keine Rotation. Einer war ein geheimer Stripe-Schlüssel, und diese App\nbekam ein D. Base44 hält seine eigenen Zugangsdaten auf seinem Server, also ist\nein Schlüssel in deinem Bundle einer, den du oder der Builder für eine Funktion\nhinzugefügt hat: eine Karte, ein Analytics-Tag, ein Zahlungsformular.\n",[36,285,287],{"href":286},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","Welche Art es ist",", liest\nsich in einer Minute, und ein geheimer wird dort rotiert, wo er ausgestellt\nwurde, bevor er aus dem Code kommt.",[10,290,291,294],{},[17,292,293],{},"Die Berechtigungsregeln deiner Tabellen."," Base44 nennt sie Data Access\nRules, und sie entscheiden, wer welche Art von Datensatz lesen und bearbeiten\ndarf. Niemand von außen kann sie testen, wir eingeschlossen, und das ist die\neine Stelle, an der ein Scan von außen eine Lücke lassen muss. Der eigene\nSicherheitsscan von Base44 liest sie, und laut seiner Dokumentation ist der\nScan in jedem Tarif verfügbar, auch im kostenlosen.",[10,296,297,300,301,304],{},[17,298,299],{},"Alles, was du selbst angeschlossen hast."," Das andere D im Sweep war eine\nBase44-App mit einem eigenen Supabase-Projekt und einer Tabelle darin, die wie\npersonenbezogene Daten benannt war und eine Anfrage ohne Anmeldung\nbeantwortete. Schließt du deine eigene Datenbank an, gelten die üblichen\n",[36,302,303],{"href":263},"Zeilenregeln"," in vollem Umfang, weil dieses Projekt\ndem Internet direkt antwortet.",[207,306],{"alt":307,"caption":308,"src":309},"Ein Scanbericht als sechs Zeilen gezeichnet. Die ersten vier Zeilen, Header, der Globus für CORS, ein Skript mit seiner Map und eine Datennutzlast, sind blass gezeichnet und enden je in einem kleinen Base44-Logo. Die letzten beiden Zeilen, ein Schlüssel und eine Datenbanktabelle, sind in Akzentfarbe gezeichnet und enden je in einer Person.","Sechs Zeilen, die ein Scan bei einer Base44-App ausgeben kann. Die ersten vier setzt die Plattform für jede App auf ihr. Die letzten beiden kann ein Besitzer ändern, und beide D-Noten im Sweep kamen von ihnen.","\u002Fblog\u002Fbase44-source-maps\u002Fwho-owns-each-line-1600x760.png",[25,311,313],{"id":312},"was-du-innerhalb-von-base44-ändern-kannst","Was du innerhalb von Base44 ändern kannst",[10,315,316],{},"Zwei Header, deine Tabellenregeln und deine Schlüssel. Der Rest wird für jede\nApp auf der Plattform gesetzt.",[10,318,319,320,323,324,327,328,331,332,335,336,339,340,343],{},"Die Dokumentation von Base44 listet auf, was du umschalten kannst (gelesen am 16. September 2026). Im Dashboard deiner App, unter Security und dann dem\nEinstellungssymbol, kannst du zwei Sicherheitsheader einschalten. ",[17,321,322],{},"Prevent\nEmbedding"," setzt ",[202,325,326],{},"X-Frame-Options",", was verhindert, dass deine App innerhalb\nder Seite einer anderen Website angezeigt wird. ",[17,329,330],{},"Restrict Browser Features","\nsetzt ",[202,333,334],{},"Permissions-Policy",", was begrenzt, wonach deine App den Browser fragen\ndarf, Kamera und Standort eingeschlossen. Wenn sich Leute bei deiner App\nanmelden und mit einem Klick etwas Folgenreiches tun können, schalte den ersten\nein. Dieselbe Seite sagt, ",[202,337,338],{},"Content-Security-Policy"," und\n",[202,341,342],{},"Strict-Transport-Security"," „are not configurable at the individual app\nlevel“. Das ist der größte Teil des Header-Befunds, und er liegt nicht in\ndeiner Hand.",[10,345,346],{},"Der eigene Scan von Base44 deckt das Innere ab: Probleme mit\nDatenberechtigungen, offengelegte Geheimnisse, Backend-Funktionen ohne\nAnmeldeprüfung, Abhängigkeiten und, ab dem Builder-Tarif, Schwachstellen im\nCode. Seine Dokumentation erwähnt weder Source Maps noch den CORS-Header, was\nfair ist, weil beides der Plattform gehört. Ein Scan von außen deckt ab, was\ndem Browser eines Besuchers ausgehändigt wird, und bei einer Base44-App ist das\nder Ort, an dem die Liste am kürzesten ist.",[42,348,349,362],{},[45,350,351],{},[48,352,353,356,359],{},[51,354,355],{},"Was der Bericht sagt",[51,357,358],{},"Wer es setzt",[51,360,361],{},"Was zu tun ist",[70,363,364,375,385,396,409,419],{},[48,365,366,369,372],{},[75,367,368],{},"Sicherheitsheader fehlen",[75,370,371],{},"Base44, mit zwei Schaltern für dich",[75,373,374],{},"Prevent Embedding einschalten, wenn sich Leute anmelden. Den Rest lassen.",[48,376,377,380,382],{},[75,378,379],{},"API ist für jede Website offen",[75,381,77],{},[75,383,384],{},"Nichts. Sieh stattdessen nach, was dahinter antwortet.",[48,386,387,390,393],{},[75,388,389],{},"Originalquellcode ist veröffentlicht",[75,391,392],{},"Das Badge-Skript von Base44",[75,394,395],{},"Nichts. Die Map enthält den Code von Base44 für das Badge.",[48,397,398,401,406],{},[75,399,400],{},"Eine Adresse antwortet ohne Anmeldung",[75,402,403,404],{},"Base44, unter ",[202,405,256],{},[75,407,408],{},"Lies, was sie zurückgibt. Einwilligungseinstellungen sollen öffentlich sein.",[48,410,411,413,416],{},[75,412,65],{},[75,414,415],{},"Du",[75,417,418],{},"Einen geheimen Schlüssel an der Quelle rotieren. Einen Google-Schlüssel einschränken.",[48,420,421,424,427],{},[75,422,423],{},"Eine lesbare Tabelle",[75,425,426],{},"Du, wenn du deine eigene Datenbank angeschlossen hast",[75,428,429],{},"Row Level Security auf jeder Tabelle, die Personen enthält.",[25,431,433],{"id":432},"was-du-jetzt-tun-solltest","Was du jetzt tun solltest",[435,436,437],"key-takeaways",{},[438,439,440,444,451,454,461,464],"ul",{},[441,442,443],"li",{},"Lies die drei Plattformzeilen in deinem Bericht als die von Base44, und dann den Rest davon.",[441,445,446,447,450],{},"Drücke F12 in deiner laufenden App und öffne den Tab ",[17,448,449],{},"Sources",". Kein Ordner mit deinen eigenen Dateien heißt keine Map deines Codes, was auch immer der Bericht sagt.",[441,452,453],{},"Finde jeden Schlüssel in der App und lies sein Präfix. Ein geheimer wird dort rotiert, wo er ausgestellt wurde, und dann aus dem Code entfernt, in dieser Reihenfolge.",[441,455,456,457,460],{},"Schalte ",[17,458,459],{},"Prevent Embedding"," unter Security ein, wenn sich deine Nutzer anmelden.",[441,462,463],{},"Öffne Data, wähle eine Tabelle, dann Permissions, und lies die Regel auf jeder Tabelle, die Personen enthält.",[441,465,466],{},"Wenn du dein eigenes Supabase-Projekt angeschlossen hast, schalte Row Level Security für jede Tabelle darin ein und prüfe, ob sie wirklich filtert.",[10,468,469],{},"Veröffentlichen ist bei Base44 ein Klick in der oberen Leiste, und nichts\nzwischen diesem Klick und dem Internet liest die App noch einmal auf einen\nSchlüssel durch, der eingefügt wurde, damit eine Funktion läuft. Ein Scan vom\nletzten Monat beschreibt die App vom letzten Monat.",[10,471,472,476],{},[36,473,475],{"href":474},"\u002Fpricing","Reeve Monitor"," ist dafür gebaut. Er führt alle neun Checks jede\nStunde auf bis zu drei Apps aus, prüft die Erreichbarkeit alle 60 Sekunden,\nsagt dir Bescheid, wenn sich ein Ergebnis ändert, statt darauf zu warten, dass\ndu nachsiehst, und schickt einen Monatsbericht. Er kostet €12 im Monat zum\nListenpreis, mit sieben Tagen kostenlos, bevor er dir etwas berechnet; die\nPreisseite liegt manchmal unter der Zahl hier und nie darüber. Monitor\nbeobachtet und sonst nichts, was bei einer Base44-App die Hälfte ist, die\npasst: Care, unser Backup-Tarif, sichert nur Supabase-Projekte, und eine\nBase44-App hält ihre Daten innerhalb von Base44, sofern du kein eigenes Projekt\nangeschlossen hast.",[10,478,479,480,483,484,488],{},"Der Leitfaden in einfacher Sprache für diese Plattform ist\n",[36,481,482],{"href":263},"Ist deine Base44-App sicher?",", und die\n",[36,485,487],{"href":486},"\u002Fchecklist","10-Minuten-Sicherheitscheckliste"," deckt ab, was sich bei jeder\nfrisch veröffentlichten App zu prüfen lohnt, egal, womit sie gebaut wurde.",{"title":490,"searchDepth":491,"depth":491,"links":492},"",3,[493,495,496,497,498,499],{"id":27,"depth":494,"text":28},2,{"id":181,"depth":494,"text":182},{"id":231,"depth":494,"text":232},{"id":268,"depth":494,"text":269},{"id":312,"depth":494,"text":313},{"id":432,"depth":494,"text":433},"Sicherheitsgrundlagen","\u002Fblog\u002Fbase44-source-maps\u002Fcover-1200x630.png","Eine Base44-App mit dem Plattform-Badge in der Ecke, von außen in einen Bericht gelesen, mit drei blassen Zeilen und einer in Akzentfarbe.","Base44-Sicherheit auf 5.438 gescannten Apps: Drei Befunde auf fast jeder gehören der Plattform, die Source Map ist das Base44-Badge, und deine Liste ist kurz.",false,"md",[507,510,513,516,519],{"q":508,"a":509},"Mein Scan sagt, meine Base44-App veröffentlicht ihren Originalquellcode. Stimmt das?","Bei den Base44-Apps, die wir im September 2026 nachgeprüft haben, nein. Die einzige Source Map, die antwortete, gehörte zum Badge-Skript von Base44 und enthält den Code von Base44 für das Badge. Deine eigenen Dateien gingen bei jeder App, die wir geöffnet haben, komprimiert und ohne Map raus. Dieselbe Zeile bei einer App von einem anderen Builder bedeutet meist, was sie sagt, und dort lohnt sie sich zu lesen.",{"q":511,"a":512},"Kann ich das CORS-Wildcard bei einer Base44-App abschalten?","Nein. Die Dokumentation von Base44 sagt, dass eine CORS-Konfiguration pro App nicht verfügbar ist und die Plattform sie verwaltet. Was du entscheidest, ist, was die Adressen deiner App auf eine Anfrage ohne Anmeldung zurückgeben, und genau dort würde der Header überhaupt eine Rolle spielen. Bei den Base44-Apps, die wir erneut geöffnet haben, lieferte die einzige Adresse, die ohne Anmeldung antwortete, Cookie-Einwilligungseinstellungen.",{"q":514,"a":515},"Ist Base44 weniger sicher als Lovable?","Ein Scan kann Builder nicht in eine Rangfolge bringen, und die beiden haben verschiedene Formen. Eine Base44-App bringt mehr Befunde, und fast alle davon sind Plattformeinstellungen, die nichts von dir preisgeben. Eine Lovable-App spricht direkt mit ihrer Supabase-Datenbank, also steht die Einstellung, die die meisten Daten leckt, eine Tabelle ohne Zeilenregeln, einem Lovable-Builder offen und einem Base44-Builder nicht. Zwei D-Noten unter 5.438 Base44-Apps gegenüber 407 unter 18.554 Lovable-Apps sind dieser Unterschied in Zahlen. Über deine App sagt das nichts, bis du sie scannst.",{"q":517,"a":518},"Was kann ich innerhalb von Base44 ändern?","Zwei Sicherheitsheader (Prevent Embedding und Restrict Browser Features, unter Security im Dashboard deiner App), die Berechtigungsregeln jeder Tabelle, welche Backend-Funktionen einen angemeldeten Nutzer verlangen und welche Schlüssel du in die App einfügst. CORS, Content-Security-Policy und Strict-Transport-Security werden von der Plattform für jede App gesetzt, und die Dokumentation von Base44 sagt das auch.",{"q":520,"a":521},"Legt eine öffentliche Source Map meine API-Schlüssel offen?","Eine Map legt Code offen, und ein Schlüssel im Code steckte schon in der komprimierten Datei, die jeder Besucher herunterlädt. Bei einer Base44-App gehört die einzige Map, die wir gefunden haben, zum Badge, also lautet die eigentliche Frage, ob überhaupt ein Schlüssel in deinem Bundle steckt. Unser Scan liest das Bundle dafür separat. Bei Base44-Apps sind die Schlüssel, die er findet, fast immer Google-API-Schlüssel, die meist eine Einschränkung in Google Cloud brauchen und keine Rotation.","\u002Fblog\u002Fbase44-source-maps\u002Fcard-800x500.png",[524,525,526,527,528,529,530],"base44 sicherheit","ist base44 sicher","base44 source maps","base44 app sicherheit","base44 cors","base44 vs lovable sicherheit","base44 security",{},true,"\u002Fblog\u002Fbase44-source-maps","2026-09-17",{"title":5,"description":503},"blog\u002Fbase44-source-maps",[538,539,540],"Base44-Sicherheit wird größtenteils von der Plattform entschieden. Ein Scan einer Base44-App bringt auf fast jeder App dieselben drei Befunde: fehlende Header, ein CORS-Wildcard-Header und eine veröffentlichte Source Map.","Am 16. September 2026 haben wir nachgesehen, was in diesen Source Maps steckt. Jede, die antwortete, gehörte zum Badge-Skript von Base44. Der Code der Besitzer ging bei jeder App, die wir geöffnet haben, ohne Map raus.","Was dir gehört, ist kurz: jeder Schlüssel, der in die App eingefügt wurde (bei 2 % der Base44-Apps gefunden), die Berechtigungsregeln deiner Tabellen und alles, was du selbst angeschlossen hast. Beide D-Noten unter 5.438 Apps kamen aus dieser Liste.","lYUeQh5VRwJql4b_7rob2v-2k8KnYW9c5r_2HC75rMI",[543,550,556,562,568,574,580,581,587,593,599,605,611,617,623,629,635,641,647,653,659,665,671,677,683,689,695,701,707,712,718,724,730,735,741,747,751,757,763,769,774,780],{"path":544,"title":545,"description":546,"published":547,"category":548,"image":549,"draft":504},"\u002Fblog\u002Fsupabase-backup-auth-users","Warum in deinem Supabase-Dump keine Nutzer stehen","Führe supabase db dump allein aus und du bekommst die Form deiner Datenbank und keine einzige Zeile, und das auth-Schema mit deinen Nutzern fehlt ganz.","2026-09-23","Backups","\u002Fblog\u002Fsupabase-backup-auth-users\u002Fcard-800x500.png",{"path":551,"title":552,"description":553,"published":554,"category":500,"image":555,"draft":504},"\u002Fblog\u002Fdomain-and-certificate-expiry","Domain abgelaufen, Website offline: was jetzt passiert","Deine Domain ist abgelaufen und deine Website ist offline. Welche Frist jetzt läuft, warum das Zertifikat das kleinere Problem ist, und wie du beides prüfst.","2026-09-22","\u002Fblog\u002Fdomain-and-certificate-expiry\u002Fcard-800x500.png",{"path":557,"title":558,"description":559,"published":560,"category":500,"image":561,"draft":504},"\u002Fblog\u002Fis-lovable-safe","Ist Lovable sicher? Was 18.554 echte Lovable-Apps zeigten","Ist Lovable sicher? Wir haben 18.554 laufende Lovable-Apps mit neun Checks geprüft. Die Plattform war die sauberste von fünf. Die Funde saßen in den Apps.","2026-09-21","\u002Fblog\u002Fis-lovable-safe\u002Fcard-800x500.png",{"path":563,"title":564,"description":565,"published":566,"category":500,"image":567,"draft":504},"\u002Fblog\u002Fvibe-coded-app-security-checklist","Die Sicherheits-Checkliste für Vibe-Coding, in neun Prüfungen","Eine Sicherheits-Checkliste für Vibe-Coding mit neun Punkten, die jeder von außen an deiner Live-App nachprüfen kann, jeder mit einem Test in einer Zeile.","2026-09-20","\u002Fblog\u002Fvibe-coded-app-security-checklist\u002Fcard-800x500.png",{"path":569,"title":570,"description":571,"published":572,"category":500,"image":573,"draft":504},"\u002Fblog\u002Fstripe-secret-key-in-frontend","Ein geheimer Stripe-Schlüssel im Frontend kann Geld bewegen","Ein geheimer Stripe-Schlüssel im Frontend kann erstatten, abbuchen und jeden Kundendatensatz lesen, den du hast. Dein pk_live_-Schlüssel gehört dorthin.","2026-09-19","\u002Fblog\u002Fstripe-secret-key-in-frontend\u002Fcard-800x500.png",{"path":575,"title":576,"description":577,"published":578,"category":500,"image":579,"draft":504},"\u002Fblog\u002Fvite-and-next-public-env-vars","Vite-Env-Variablen offengelegt: der Präfix heißt veröffentlichen","Vite-Env-Variablen offengelegt: Deine App hat getan, was der Präfix verlangt. VITE_ und NEXT_PUBLIC_ heißen veröffentlichen, und die KI kannte den Preis nie.","2026-09-18","\u002Fblog\u002Fvite-and-next-public-env-vars\u002Fcard-800x500.png",{"path":533,"title":5,"description":503,"published":534,"category":500,"image":522,"draft":504},{"path":582,"title":583,"description":584,"published":585,"category":500,"image":586,"draft":504},"\u002Fblog\u002Fis-cursor-ai-safe","Ist Cursor AI sicher? Editor, Code und die App, die du veröffentlichst","Ist Cursor AI sicher? Drei Fragen in einer Suche: was Cursor behält, was sein Code falsch macht und ob deine veröffentlichte App offen steht.","2026-09-16","\u002Fblog\u002Fis-cursor-ai-safe\u002Fcard-800x500.png",{"path":588,"title":589,"description":590,"published":591,"category":500,"image":592,"draft":504},"\u002Fblog\u002Fis-replit-safe","Ist Replit sicher? Was wir in 3.042 Replit-Apps gefunden haben","Ist Replit sicher? Wir haben 3.042 laufende Replit-Apps mit neun externen Checks geprüft. Die Funde saßen in der veröffentlichten App, nicht im Hosting.","2026-09-15","\u002Fblog\u002Fis-replit-safe\u002Fcard-800x500.png",{"path":594,"title":595,"description":596,"published":597,"category":548,"image":598,"draft":504},"\u002Fblog\u002Fsupabase-storage-backup","Supabase Storage Backup: deine Datenbankkopie hat keine Dateien","Ein Supabase Storage Backup ist eine eigene Aufgabe. Datenbank-Backups enthalten die Liste deiner Dateien und keine davon, also bleibt jeder Upload kaputt.","2026-09-14","\u002Fblog\u002Fsupabase-storage-backup\u002Fcard-800x500.png",{"path":600,"title":601,"description":602,"published":603,"category":548,"image":604,"draft":504},"\u002Fblog\u002Fsupabase-point-in-time-recovery","Supabase Point-in-Time Recovery: Kosten und Grenzen","Supabase Point-in-Time Recovery spult deine Datenbank auf jede Sekunde der letzten Woche zurück. $100 im Monat zusätzlich zu Pro, und nur die Datenbank.","2026-09-13","\u002Fblog\u002Fsupabase-point-in-time-recovery\u002Fcard-800x500.png",{"path":606,"title":607,"description":608,"published":609,"category":548,"image":610,"draft":504},"\u002Fblog\u002Fsupabase-project-paused-recover","Supabase-Projekt pausiert? Deine Daten sind noch da","Supabase hat dein Projekt nach einer Woche ohne Aktivität pausiert. Gelöscht ist nichts, Wiederherstellen steht neben dem Namen, und du hast ein Jahr.","2026-09-12","\u002Fblog\u002Fsupabase-project-paused-recover\u002Fcard-800x500.png",{"path":612,"title":613,"description":614,"published":615,"category":500,"image":616,"draft":504},"\u002Fblog\u002Fsafest-ai-app-builder","Welcher KI-App-Builder ist am sichersten? 30.998 Apps im Test","Welcher KI-App-Builder ist am sichersten? Wir haben 30.998 aktive Apps von Lovable, Base44, Replit, v0 und Bolt gescannt. Der Builder entscheidet das nicht.","2026-09-11","\u002Fblog\u002Fsafest-ai-app-builder\u002Fcard-800x500.png",{"path":618,"title":619,"description":620,"published":621,"category":500,"image":622,"draft":504},"\u002Fblog\u002Fenable-rls-on-every-supabase-table","Row Level Security für jede Supabase-Tabelle aktivieren und prüfen","Row Level Security in Supabase ohne Policy sperrt eine Tabelle komplett. Eine Policy ohne den Schalter bringt gar nichts. Hier ist das SQL, und der Test.","2026-09-10","\u002Fblog\u002Fenable-rls-on-every-supabase-table\u002Fcard-800x500.png",{"path":624,"title":625,"description":626,"published":627,"category":500,"image":628,"draft":504},"\u002Fblog\u002Fsupabase-rls-disabled-in-public","Supabase \"RLS disabled in public\": was die Warnung übersieht","Supabase meldet \"RLS disabled in public\" als Fehler. Zur Lese-Policy, die deine Tabelle genauso offen lässt, sagt der Advisor gar nichts.","2026-09-09","\u002Fblog\u002Fsupabase-rls-disabled-in-public\u002Fcard-800x500.png",{"path":630,"title":631,"description":632,"published":633,"category":500,"image":634,"draft":504},"\u002Fblog\u002Frotate-supabase-service-role-key","Geleakten Supabase-service_role-Schlüssel richtig tauschen","Supabase sagt: erst das Leck schließen. Andere Anleitungen: sofort tauschen. Was richtig ist, hängt davon ab, wohin dein service_role-Schlüssel gelangt ist.","2026-09-08","\u002Fblog\u002Frotate-supabase-service-role-key\u002Fcard-800x500.png",{"path":636,"title":637,"description":638,"published":639,"category":500,"image":640,"draft":504},"\u002Fblog\u002Fvibe-coding-security-scanners-compared","Vibe-Coding-Security-Scanner im Vergleich, unserer eingeschlossen","Der beste Vibe-Coding-Security-Scanner hängt an drei Fragen, die keine Funktionsliste beantwortet. Zehn Tools im Vergleich, mit Preisen und unseren Lücken.","2026-09-07","\u002Fblog\u002Fvibe-coding-security-scanners-compared\u002Fcard-800x500.png",{"path":642,"title":643,"description":644,"published":645,"category":500,"image":646,"draft":504},"\u002Fblog\u002Fsupabase-security-checker","Supabase Security Checker: die fünf Prüfungen selbst machen","Ein Supabase Security Checker liest deine veröffentlichte App statt deiner Projekteinstellungen. Hier sind die fünf Prüfungen und wie du jede selbst ausführst.","2026-09-06","\u002Fblog\u002Fsupabase-security-checker\u002Fcard-800x500.png",{"path":648,"title":649,"description":650,"published":651,"category":500,"image":652,"draft":504},"\u002Fblog\u002Fvibe-coding-security-scanner","Vibe-Coding-Security-Scanner: was ein URL-Scan übersieht","Ein Vibe-Coding-Security-Scanner liest deine laufende App von außen. Was das abdeckt, die vier Dinge, die er nicht sehen kann, und wie du das Ergebnis liest.","2026-09-05","\u002Fblog\u002Fvibe-coding-security-scanner\u002Fcard-800x500.png",{"path":654,"title":655,"description":656,"published":657,"category":500,"image":658,"draft":504},"\u002Fblog\u002Fmissing-security-headers","Fehlende Sicherheitsheader: wann sie wirklich zählen","Fehlende Sicherheitsheader ist unser häufigster Befund. Wogegen sie schützen, und wann sie die unwichtigste Zeile in deinem Bericht sind.","2026-09-04","\u002Fblog\u002Fmissing-security-headers\u002Fcard-800x500.png",{"path":660,"title":661,"description":662,"published":663,"category":500,"image":664,"draft":504},"\u002Fblog\u002Fopenai-api-key-exposed-in-frontend","Dein OpenAI-API-Schlüssel liegt im Frontend. Tausch ihn aus.","Ein OpenAI-API-Schlüssel im Frontend lässt sich an keine Domain binden. Tausch ihn heute, leg den Aufruf hinter deinen Server und begrenze das Budget.","2026-09-03","\u002Fblog\u002Fopenai-api-key-exposed-in-frontend\u002Fcard-800x500.png",{"path":666,"title":667,"description":668,"published":669,"category":500,"image":670,"draft":504},"\u002Fblog\u002Fwhat-secrets-leak-from-vibe-coded-apps","API-Schlüssel im Frontend: was 30.998 Apps wirklich ausliefern","Ein API-Schlüssel im Frontend ist meistens ein Google-Maps-Schlüssel. Wir haben 30.998 aktive Vibe-Coding-Apps gescannt und gezählt, was wirklich austritt.","2026-09-02","\u002Fblog\u002Fwhat-secrets-leak-from-vibe-coded-apps\u002Fcard-800x500.png",{"path":672,"title":673,"description":674,"published":675,"category":548,"image":676,"draft":504},"\u002Fblog\u002Fsupabase-backup-tools-compared","Supabase-Backup-Tools im Vergleich, unseres eingeschlossen","Vier Arten von Supabase-Backup-Tool, was jedes wirklich kopiert und wann eine kostenlose GitHub Action jeden Anbieter schlägt, uns eingeschlossen.","2026-09-01","\u002Fblog\u002Fsupabase-backup-tools-compared\u002Fcard-800x500.png",{"path":678,"title":679,"description":680,"published":681,"category":500,"image":682,"draft":504},"\u002Fblog\u002Freplit-secrets-explained","Secrets in Replit nutzen, und was trotzdem veröffentlicht wird","Secrets in Replit nutzen: anlegen, auslesen und die zwei Gründe beheben, warum undefined zurückkommt. Dazu die Schlüssel, die das Werkzeug nicht schützt.","2026-08-31","\u002Fblog\u002Freplit-secrets-explained\u002Fcard-800x500.png",{"path":684,"title":685,"description":686,"published":687,"category":548,"image":688,"draft":504},"\u002Fblog\u002Fback-up-supabase-free-tier","Supabase Gratis-Tarif: Backup ohne Terminal selbst machen","Im Supabase Gratis-Tarif gibt es keine Backups, die Kopie musst du selbst machen. Wie das im Dashboard geht und was der CSV-Weg auslässt.","2026-08-30","\u002Fblog\u002Fback-up-supabase-free-tier\u002Fcard-800x500.png",{"path":690,"title":691,"description":692,"published":693,"category":500,"image":694,"draft":504},"\u002Fblog\u002Fis-supabase-secure","Ist Supabase sicher? Ja. Dein Projekt ist eine eigene Frage","Ist Supabase sicher? Die Plattform ist auditiert, verschlüsselt und pentestet. Supabase schreibt selbst auf, wo das aufhört und deine Einstellungen anfangen.","2026-08-29","\u002Fblog\u002Fis-supabase-secure\u002Fcard-800x500.png",{"path":696,"title":697,"description":698,"published":699,"category":500,"image":700,"draft":504},"\u002Fblog\u002Fwhere-to-find-supabase-api-keys","Wo du deine Supabase API-Keys findest: anon, service_role, URL","Projekt-URL, anon-Schlüssel und service_role-Schlüssel liegen auf einer Seite im Dashboard. Wo sie ist, und welcher der vier Werte in deine App gehört.","2026-08-28","\u002Fblog\u002Fwhere-to-find-supabase-api-keys\u002Fcard-800x500.png",{"path":702,"title":703,"description":704,"published":705,"category":500,"image":706,"draft":504},"\u002Fblog\u002Fnew-row-violates-row-level-security-policy","New row violates row-level security policy in Supabase: was jetzt?","\"New row violates row-level security policy\" heißt, Supabase hat einen Schreibvorgang abgelehnt. Die schnelle Lösung öffnet die Tabelle wieder für alle.","2026-08-27","\u002Fblog\u002Fnew-row-violates-row-level-security-policy\u002Fcard-800x500.png",{"path":248,"title":708,"description":709,"published":710,"category":500,"image":711,"draft":504},"Ist eine CORS-Wildcard ein Sicherheitsrisiko? Meist nicht.","Ist eine CORS-Wildcard ein Sicherheitsrisiko? Meist ist sie die Voreinstellung deines Builders und gibt nichts preis, was dein Server nicht ohnehin herausgab.","2026-08-26","\u002Fblog\u002Fcors-wildcard-security-risk\u002Fcard-800x500.png",{"path":713,"title":714,"description":715,"published":716,"category":548,"image":717,"draft":504},"\u002Fblog\u002Fsupabase-branching-is-not-a-backup","Supabase Branching ist kein Backup. Es geht nur vorwärts.","Warum Supabase Branching kein Backup ist: Ein Branch startet ohne deine Daten, und ein Merge bringt nur das Schema. Wofür es gut ist und was stattdessen hilft.","2026-08-25","\u002Fblog\u002Fsupabase-branching-is-not-a-backup\u002Fcard-800x500.png",{"path":719,"title":720,"description":721,"published":722,"category":548,"image":723,"draft":504},"\u002Fblog\u002Fhow-to-restore-a-supabase-backup","Supabase-Backup wiederherstellen, und was danach kaputt ist","Wie du ein Supabase-Backup aus dem Dashboard oder aus einer Dump-Datei wiederherstellst, was ersetzt wird und warum die App danach kaputt sein kann.","2026-08-24","\u002Fblog\u002Fhow-to-restore-a-supabase-backup\u002Fcard-800x500.png",{"path":725,"title":726,"description":727,"published":728,"category":500,"image":729,"draft":504},"\u002Fblog\u002Fsupabase-storage-bucket-public","Dein Supabase-Storage-Bucket ist öffentlich. Ist das ein Problem?","Ein öffentlicher Supabase-Storage-Bucket heißt: Wer die URL einer Datei hat, kann sie öffnen. Er heißt nicht, dass jemand den Inhalt auflisten darf.","2026-08-23","\u002Fblog\u002Fsupabase-storage-bucket-public\u002Fcard-800x500.png",{"path":281,"title":731,"description":732,"published":733,"category":500,"image":734,"draft":504},"Ist ein Google-API-Schlüssel im Frontend ein Problem?","Ein Google-API-Schlüssel im Frontend ist der Fund unseres Scanners Nummer eins, und meistens unbedenklich. Eine kostenlose Einstellung entscheidet darüber.","2026-08-22","\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend\u002Fcard-800x500.png",{"path":736,"title":737,"description":738,"published":739,"category":548,"image":740,"draft":504},"\u002Fblog\u002Fai-agent-deleted-my-database","Ein KI-Agent hat meine Supabase-Daten gelöscht. Was hole ich zurück?","Ein KI-Agent hat Daten aus deiner Datenbank gelöscht. Was du zurückholst, stand schon vorher fest, und die nächsten Minuten entscheiden über den Rest.","2026-08-21","\u002Fblog\u002Fai-agent-deleted-my-database\u002Fcard-800x500.png",{"path":742,"title":743,"description":744,"published":745,"category":500,"image":746,"draft":504},"\u002Fblog\u002Fcan-anyone-read-your-supabase-database","Kann jeder deine Supabase-Datenbank lesen? 3.680 Apps im Test","Kann jeder deine Supabase-Datenbank ohne Login lesen? Wir haben 30.998 aktive Apps aus KI-Buildern gescannt und gemessen, wie oft die Antwort ja lautet.","2026-08-18","\u002Fblog\u002Fcan-anyone-read-your-supabase-database\u002Fcard-800x500.png",{"path":195,"title":748,"description":749,"published":745,"category":500,"image":750,"draft":504},"Source-Maps öffentlich: deine App veröffentlicht ihren Quellcode","Eine öffentliche Source-Map lässt jeden den Originalcode deiner App lesen, Kommentare inklusive. Der 30-Sekunden-Check, und was wirklich zählt.","\u002Fblog\u002Fsource-maps-exposed-in-production\u002Fcard-800x500.png",{"path":752,"title":753,"description":754,"published":755,"category":500,"image":756,"draft":504},"\u002Fblog\u002Fsupabase-new-api-keys","Supabases neue API-Schlüssel: welcher gehört in deine App?","Supabase hat anon und service_role durch öffentliche und geheime Schlüssel ersetzt. Welcher gehört in deine App, und welcher nie?","2026-08-12","\u002Fblog\u002Fsupabase-new-api-keys\u002Fcard-800x500.png",{"path":758,"title":759,"description":760,"published":761,"category":548,"image":762,"draft":504},"\u002Fblog\u002Fdoes-supabase-back-up-my-database","Sichert Supabase meine Datenbank? Das hängt von deinem Tarif ab.","Sichert Supabase deine Datenbank? Auf bezahlten Tarifen täglich, im Gratis-Tarif gar nicht. So findest du heraus, was du hast und was es nicht abdeckt.","2026-08-11","\u002Fblog\u002Fdoes-supabase-back-up-my-database\u002Fcard-800x500.png",{"path":764,"title":765,"description":766,"published":767,"category":500,"image":768,"draft":504},"\u002Fblog\u002Fsupabase-rls-on-but-table-still-public","Supabase Row Level Security ist an. Die Tabelle ist trotzdem offen.","Supabase Row Level Security anzuschalten schützt keine Tabelle. Erst deine Policies tun das, und die, die deine App repariert hat, lässt oft alle herein.","2026-08-10","\u002Fblog\u002Fsupabase-rls-on-but-table-still-public\u002Fcard-800x500.png",{"path":770,"title":771,"description":772,"published":767,"category":548,"image":773,"draft":504},"\u002Fblog\u002Fversion-history-is-not-a-backup","Der Versionsverlauf ist kein Backup. Er holt keine Tabelle zurück.","Lovable und Bolt führen einen Versionsverlauf für deinen Code. Deine Datenbank ist ein eigener Dienst, und ein Rücksprung holt deine Daten nicht zurück.","\u002Fblog\u002Fversion-history-is-not-a-backup\u002Fcard-800x500.png",{"path":775,"title":776,"description":777,"published":778,"category":548,"image":779,"draft":504},"\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database","Drei Wege, eine Supabase-Datenbank zu sichern, und was fehlt","Das Dashboard, pg_dump und ein verwalteter Dienst. Was jeder Weg wirklich sichert, was er stillschweigend auslässt und welcher den Kontoverlust übersteht.","2026-08-09","\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database\u002Fcard-800x500.png",{"path":286,"title":781,"description":782,"published":778,"category":500,"image":783,"draft":504},"Welche API-Schlüssel im Frontend sicher sind, und welche nicht","Dein Supabase-anon-Schlüssel darf öffentlich sein. Der service_role-Schlüssel nicht. Er ignoriert jede Regel, die du setzt. So erkennst du den Unterschied.","\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend\u002Fcard-800x500.png",1790150951364]