[{"data":1,"prerenderedAt":779},["ShallowReactive",2],{"blog-de-is-replit-safe":3,"blog-index-de":539},{"id":4,"title":5,"body":6,"category":497,"cover":498,"coverAlt":499,"description":500,"draft":501,"extension":502,"faq":503,"image":519,"keywords":520,"meta":528,"navigation":529,"ogTitle":5,"path":530,"published":531,"seo":532,"stem":533,"tldr":534,"updated":531,"__hash__":538},"blog_de\u002Fblog\u002Fis-replit-safe.md","Ist Replit sicher? Was wir in 3.042 Replit-Apps gefunden haben",{"type":7,"value":8,"toc":482},"minimark",[9,13,21,24,29,32,35,57,60,66,70,83,230,233,238,242,245,253,256,260,263,274,279,285,293,300,304,312,315,330,334,337,345,361,365,368,371,379,383,386,420,424,427,434,438,469],[10,11,12],"p",{},"Du hast etwas auf Replit gebaut, es funktioniert, und du willst echte Menschen\ndarauf lassen. Irgendwann in dieser Woche hast du „ist replit sicher“ in ein\nSuchfeld getippt, und zurück kam entweder eine Seite über Replits\nZertifizierungen oder eine über einen KI-Agenten, der eine Datenbank gelöscht\nhat. Keine von beiden hat ein Wort über die App verloren, die du gleich\nveröffentlichst.",[10,14,15,16,20],{},"Hier ist der Teil, den die meisten dieser Antworten falsch machen: ",[17,18,19],"strong",{},"„Ist\nReplit sicher?“ sind drei Fragen in einem Satz",", und die, die entscheidet, ob\nFremde die Daten deiner Nutzer lesen können, ist die, die fast niemand misst.",[10,22,23],{},"Wir können sie messen. Zwischen dem 12. und 14. August 2026 haben wir dieselben\nneun externen Checks, die jeder kostenlos auf unserer Startseite laufen lassen\nkann, über 30.998 laufende Apps geschickt, und 3.042 davon waren auf Replit\nveröffentlicht. Das hier ist, was dabei herauskam, und wo unser Blick endet.",[25,26,28],"h2",{"id":27},"ist-replit-sicher","Ist Replit sicher?",[10,30,31],{},"Als Host war es nicht der Ort, an dem wir etwas gefunden haben. Die zwei Dinge,\ndie wir am Hosting von außen sehen können, waren bei jeder App sauber, die\ngeantwortet hat, und die neun Apps mit D oder F kamen alle über etwas dorthin,\ndas in der App selbst steckt.",[10,33,34],{},"Stell dir Replit als gemieteten Laden mit Werkstatt im Hinterzimmer vor. Dem\nVermieter gehören das Gebäude und das Schloss an der Straßentür. Wer den Laden\neingerichtet hat, hat entschieden, wo die Regale stehen und wie das Hinterzimmer\nmit dem Verkaufsraum verbunden ist. Und was ein Passant vom Gehweg aus erreichen\nkann, entscheidest du, jedes Mal, wenn du aufmachst. Das sind drei verschiedene\nFragen, und eine gute Antwort auf die ersten beiden sagt nichts über die dritte.",[36,37,38,45,51],"ol",{},[39,40,41,44],"li",{},[17,42,43],{},"Die Plattform."," Hostet Replit deine App ordentlich: ein gültiges\nZertifikat, eine Domain, die nicht abläuft, Secrets verschlüsselt und\naußerhalb deiner Dateien. Das ist der Vermieter.",[39,46,47,50],{},[17,48,49],{},"Der Agent."," Ist der Code sicher, den Replits KI schreibt. Das ist der\nHandwerker, und kein Scan von außen kann die Verkabelung sehen.",[39,52,53,56],{},[17,54,55],{},"Die App, die du veröffentlicht hast."," Was ein Fremder von der Straße aus\nerreicht: ein Schlüssel im Code, den ein Browser herunterlädt, eine\nAPI-Route, die ohne Anmeldung antwortet, eine Datei, die nie eine URL hätte\nhaben dürfen.",[10,58,59],{},"Unsere Checks lesen die dritte. Zur ersten: Das Zertifikat war bei allen 3.028\nApps gültig, bei denen wir eines lesen konnten, und keine Domain von 3.042 stand\nkurz vor dem Ablauf. Zur zweiten haben wir nichts zu messen, und der Abschnitt\ndazu weiter unten sagt das auch.",[61,62],"diagram",{"alt":63,"caption":64,"src":65},"Drei Tafeln nebeneinander. Die erste zeigt das Replit-Logo mit einem Vorhängeschloss und einem Zertifikat daneben. Die zweite zeigt ein Code-Zeichen mit einem Funken darüber. Die dritte zeigt eine Browserseite vor einem Server, drei Besucher, die danach greifen, und eine Lupe, die nur über dieser Tafel liegt, mit der Zahl 3.042 darunter.","Drei Fragen in einer Suche. Ein Scan von außen liest die dritte Tafel und nichts aus den anderen beiden.","\u002Fblog\u002Fis-replit-safe\u002Fthree-questions-1600x700.png",[25,67,69],{"id":68},"was-wir-in-3042-replit-apps-gefunden-haben","Was wir in 3.042 Replit-Apps gefunden haben",[10,71,72,73,76,77,82],{},"Neun Checks, von außen ausgeführt, ohne Anmeldung und ohne Zugriff auf\nirgendjemandes Konto. Wir haben nie eine Zeile gelesen: Wo eine Datenbank\ngeantwortet hat, haben wir gefragt, wie viele Zeilen sie herausgeben würde, und\ndort aufgehört. Keine App wird hier oder irgendwo sonst von uns genannt. Jeder\nAnteil unten bezieht sich auf die Apps, bei denen der jeweilige Check\n",[17,74,75],{},"geantwortet"," hat, denn ein Check, der nicht fertig wurde, ist unbekannt und\nnicht bestanden, und diese Regel ist der Grund, warum sich die Nenner bewegen.\nMethode und Daten stehen ",[78,79,81],"a",{"href":80},"\u002Fresearch\u002Fvibe-coded-app-security-2026","im Bericht",".",[84,85,86,103],"table",{},[87,88,89],"thead",{},[90,91,92,96,100],"tr",{},[93,94,95],"th",{},"Was wir geprüft haben",[93,97,99],{"align":98},"right","Replit-Apps",[93,101,102],{},"Wer es entscheidet",[104,105,106,118,129,139,150,160,170,189,199,209,220],"tbody",{},[90,107,108,112,115],{},[109,110,111],"td",{},"Browser-Sicherheitsheader fehlen",[109,113,114],{"align":98},"2.924 von 3.042 (96 %)",[109,116,117],{},"Was die Seite ausliefert",[90,119,120,123,126],{},[109,121,122],{},"Eine API-Route, die einem Fremden Daten geliefert hat",[109,124,125],{"align":98},"1.050 von 3.037 (35 %)",[109,127,128],{},"Deine App",[90,130,131,134,137],{},[109,132,133],{},"Etwas Schlüsselförmiges im Code, den ein Besucher herunterlädt",[109,135,136],{"align":98},"219 von 3.042 (7 %)",[109,138,128],{},[90,140,141,144,147],{},[109,142,143],{},"Originaler Quellcode veröffentlicht (Source-Maps)",[109,145,146],{"align":98},"168 von 3.041 (6 %)",[109,148,149],{},"Eine Build-Einstellung",[90,151,152,155,158],{},[109,153,154],{},"Jede Website darf deine API aufrufen",[109,156,157],{"align":98},"76 von 3.037",[109,159,128],{},[90,161,162,165,168],{},[109,163,164],{},"Jede Website darf sie mit den Cookies deiner Nutzer aufrufen",[109,166,167],{"align":98},"56 von 3.037",[109,169,128],{},[90,171,172,184,187],{},[109,173,174,175,179,180,183],{},"Eine private Datei wie ",[176,177,178],"code",{},".env"," oder ",[176,181,182],{},".git\u002Fconfig"," unter öffentlicher URL",[109,185,186],{"align":98},"7 von 3.023",[109,188,128],{},[90,190,191,194,197],{},[109,192,193],{},"Eine Datenbanktabelle ohne Anmeldung lesbar",[109,195,196],{"align":98},"4 von 3.033",[109,198,128],{},[90,200,201,204,207],{},[109,202,203],{},"Ein Storage-Bucket, der seine Dateien auflistet",[109,205,206],{"align":98},"0 von 3.035",[109,208,128],{},[90,210,211,214,217],{},[109,212,213],{},"Zertifikat abgelaufen oder nicht vertrauenswürdig",[109,215,216],{"align":98},"0 von 3.028",[109,218,219],{},"Replit",[90,221,222,225,228],{},[109,223,224],{},"Domain kurz vor dem Ablauf",[109,226,227],{"align":98},"0 von 3.042",[109,229,219],{},[10,231,232],{},"Die Noten: 2.789 A, 183 B, 61 C, 8 D und 1 F. Einunddreißig Apps hatten gar\nkeinen Fund.",[61,234],{"alt":235,"caption":236,"src":237},"Sieben waagerechte Balken auf einer Skala, jeder mit einem kleinen Zeichen davor und einer Zahl am Ende: 2.924 für Header, 1.050 für offene Routen, 219 für Schlüssel, 168 für Source-Maps, 76 und 56 für die beiden Cross-Origin-Funde und 7 für private Dateien. Der oberste Balken ist blass grau, die übrigen sind türkis, und die 7 ist eine Haarlinie mit einem Ring darum.","Eine Skala für alle sieben. Den grauen Balken entscheidet das Hosting. Jeder türkise Balken folgte aus etwas in der App.","\u002Fblog\u002Fis-replit-safe\u002Fwhat-we-found-1600x720.png",[25,239,241],{"id":240},"warum-99-hatten-einen-fund-hier-wenig-bedeutet","Warum „99 % hatten einen Fund“ hier wenig bedeutet",[10,243,244],{},"Weil 2.924 dieser Funde derselbe sind, und er ist die am wenigsten dringende\nZeile, die ein Bericht enthalten kann.",[10,246,247,248,252],{},"Browser-Sicherheitsheader schickt, was deine Seite ausliefert. Auf der eigenen\nDomain eines Builders ist das der Builder, weshalb die Zahl hier 96 % beträgt,\n99 % bei Lovable und 100 % bei v0, und weshalb jede App auf demselben Host\ndieselbe Antwort bekommt. Replit ist einer der wenigen Orte, an denen du das\nändern kannst: Wenn deine App ihren eigenen Server betreibt, schickt dieser\nServer die Header, und ",[78,249,251],{"href":250},"\u002Fblog\u002Fmissing-security-headers","sie hinzuzufügen sind ein paar Zeilen",".\nEs lohnt sich, und es ist nicht das, woraus ein D gemacht ist.",[10,254,255],{},"Lass diese Zeile weg, und 1.798 der 3.042 Apps hatten nichts, das aus dem\nGebauten folgte. Die anderen 1.244 sind der Ort, an dem der Rest dieses Beitrags\nspielt.",[25,257,259],{"id":258},"der-typische-replit-fund-eine-eigene-api-route","Der typische Replit-Fund: eine eigene API-Route",[10,261,262],{},"Das Häufigste, was wir gefunden haben und was ein Besitzer selbst dort\nhingelegt hatte, war eine Route auf dem eigenen Server der App, die einem\nFremden Daten geliefert hat. 1.050 von 3.037 Apps hatten mindestens eine.",[10,264,265,266,269,270,273],{},"Eine Lovable-App ist ein Frontend plus eine Datenbank, die jemand anderes\nbetreibt. Eine Replit-App ist meist der ganze Laden: die Seite und dahinter ein\nServer, der mit der Datenbank spricht, im selben Projekt und oft in derselben\nSitzung geschrieben. Der siebte unserer neun Checks liest die API-Pfade, die im\nJavaScript deiner App stehen, ",[176,267,268],{},"\u002Fapi\u002Forders",", ",[176,271,272],{},"\u002Fapi\u002Fusers",", was er eben findet,\nund fragt jeden davon ohne Anmeldung, ob er antwortet. Bei Lovable hat das bei 8\nvon 18.518 Apps ausgelöst, weil es dort meist keinen eigenen Server des\nBesitzers gibt, den man fragen könnte. Bei Replit bei 1.050.",[61,275],{"alt":276,"caption":277,"src":278},"Zwei Apps nebeneinander. Links eine Browserseite mit einem gestrichelten Pfeil, der die Tafel verlässt und zu einem Datenbankzylinder außerhalb führt, mit der Zahl 8 darunter. Rechts eine Browserseite mit einem Server dahinter in derselben Tafel, ein Besucher am Rand der Tafel, der von diesem Server einen Datenblock bekommt, und die Zahl 1.050 darunter.","Die linke App hat keinen eigenen Server, der offen stehen könnte. Die rechte schon, und dort sitzen ihre Funde.","\u002Fblog\u002Fis-replit-safe\u002Fthe-server-you-own-1600x640.png",[10,280,281,282,284],{},"Der Fund ist als mittel eingestuft, weil das manchmal genau richtig ist. Eine\nRoute, die deine öffentliche Produktliste liefert, sollte jedem antworten.\nFalsch ist es, wenn die Route ",[176,283,272],{}," heißt und die Antwort deine Nutzer\nsamt E-Mail-Adressen sind, und du merkst es daran, dass jeder diese Adresse in\neinem Tab öffnen und lesen kann. Eine Route, die privat sein soll, braucht eine\nAnmeldeprüfung, und jeder ohne Anmeldung bekommt eine 401.",[10,286,287,288,292],{},"Im Laden ist das die Hintertür, die sich von der Straße aus öffnen lässt. Wenn\ndu Supabase benutzt hast, ist es derselbe Fehler, den du als\n",[78,289,291],{"href":290},"\u002Fblog\u002Fcan-anyone-read-your-supabase-database","Tabelle ohne Row Level Security","\nbeschrieben gesehen hast, in anderer Form. Die Zeilen sind lesbar, weil nichts\nzwischen dem Fremden und den Daten gefragt hat, wer er ist.",[10,294,295,296,82],{},"Zwei kleinere Funde stehen daneben. 76 Apps haben jeder Website der Welt gesagt,\nsie dürfe ihre API aufrufen, und 56 weitere haben das mit angehängten\nAnmelde-Cookies des Besuchers erlaubt, also in der Variante, die eine andere\nSeite als deinen Nutzer handeln lässt und\n",[78,297,299],{"href":298},"\u002Fblog\u002Fcors-wildcard-security-risk","die selten richtig ist",[25,301,303],{"id":302},"woraus-7-haben-ein-secret-ausgeliefert-besteht","Woraus „7 % haben ein Secret ausgeliefert“ besteht",[10,305,306,307,311],{},"Größtenteils aus Google-Schlüsseln. 219 der 3.042 Apps hatten etwas\nSchlüsselförmiges im Code, den ein Besucher herunterlädt, und 200 davon waren\nein Google-API-Schlüssel, was meist in Ordnung ist, sobald er\n",[78,308,310],{"href":309},"\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend","auf deine eigene Domain beschränkt","\nwurde. Zweiunddreißig trugen einen schlüsselförmigen Wert, den wir keinem\nAnbieter zuordnen konnten. Drei Apps hielten einen Schlüssel, der ein Konto\ndirekt belastet: einen von OpenAI, Anthropic oder AWS.",[10,313,314],{},"Drei von 3.042 ist selten. Es ist zugleich der Fund, der ganz allein Geld\nkostet, der Kassenschlüssel, der auf der Theke liegen blieb, und er zeigt sich\nmeist als Nutzungsrechnung, die eintrifft, bevor jemand etwas bemerkt hat. Ein\nScanner, der nur Muster abgleicht, würde alle 219 als Problem ausgeben; wir\nlesen, was jeder Schlüssel kann, denn die Alternative wäre, dir beizubringen,\ndie Warnung an dem Tag zu ignorieren, an dem sie zählt.",[10,316,317,318,322,323,179,326,329],{},"Auf Replit ist der Weg, den ein Schlüssel ins Bundle nimmt, speziell genug für\n",[78,319,321],{"href":320},"\u002Fblog\u002Freplit-secrets-explained","einen eigenen Artikel",". Das Secrets-Werkzeug\nhält einen Wert aus deinen Dateien heraus, und das macht es gut. Aus dem Browser\nheraushalten kann es ihn nicht, wenn Browser-Code ihn liest, und der Weg, wie\nLeute das zum Laufen bringen, ist, die Variable in ",[176,324,325],{},"VITE_",[176,327,328],{},"NEXT_PUBLIC_","\numzubenennen, was eine Anweisung an das Build-Werkzeug ist, sie zu\nveröffentlichen.",[25,331,333],{"id":332},"die-zwei-die-du-mit-einer-einstellung-behebst","Die zwei, die du mit einer Einstellung behebst",[10,335,336],{},"Source-Maps und eine verirrte private Datei. Beides entscheidet sich daran, wie\ndas Projekt gebaut wird, und beides ist eine Einstellung und kein Umbau.",[10,338,339,340,344],{},"168 Apps haben Source-Maps veröffentlicht, was heißt, dass die Originaldateien\nhinter der App, Kommentare eingeschlossen, in den Entwicklerwerkzeugen jedes\nBrowsers lesbar sind. Auf Replit liegt die Build-Konfiguration in deinem\nProjekt, der Schalter gehört also dir;\n",[78,341,343],{"href":342},"\u002Fblog\u002Fsource-maps-exposed-in-production","was eine veröffentlichte Map preisgibt und was nicht","\nlohnt sich zu lesen, bevor du entscheidest, dass es egal ist.",[10,346,347,348,350,351,353,354,356,357,360],{},"Sieben Apps haben eine private Datei unter einer schlichten URL ausgeliefert:\neine ",[176,349,178],{},", eine ",[176,352,182],{},". Fünf der neun Apps mit D oder F hatten diesen\nFund, und er ist der kürzeste Weg zu einem schlechten Tag auf der Liste, denn\neine ",[176,355,178],{}," unter einer URL ist jeder Schlüssel darin in einer einzigen Anfrage.\nÖffne in einem privaten Fenster deine veröffentlichte Adresse mit ",[176,358,359],{},"\u002F.env"," am\nEnde. Es sollte scheitern. Zeigt es Text, rotiere heute jeden Schlüssel in\ndieser Datei und nimm die Datei dann aus dem heraus, was du deployst.",[25,362,364],{"id":363},"ist-der-code-sicher-den-replits-agent-schreibt","Ist der Code sicher, den Replits Agent schreibt?",[10,366,367],{},"Wir haben ihn nicht gemessen, und kein Scan von außen kann das. Was ein Scan\nsieht, ist das Ergebnis: Die 1.050 offenen Routen und die drei abrechnenden\nSchlüssel hat jemand geschrieben, ein Agent oder ein Mensch, und veröffentlicht.",[10,369,370],{},"Aktenkundig ist ein Ereignis. Im Juli 2025 hat Replits Agent mitten in einer\nSitzung, in der er angewiesen war, nichts zu ändern, eine Produktionsdatenbank\ngelöscht, und Replits CEO hat das öffentlich eingeräumt; die Trennung von\nEntwicklungs- und Produktionsdatenbanken war Teil der Reaktion des Unternehmens.\nWas für dich daraus folgt, ist bei jedem Builder mit Agent dasselbe: Halte den\nAgenten von der laufenden Datenbank fern, und bewahre eine Kopie deiner Daten\ndort auf, wo der Agent nicht hinkommt.",[10,372,373,374,378],{},"Wo diese Kopie liegt, hängt davon ab, wo deine Daten liegen. Hält deine\nReplit-App sie in Supabase, ist das ",[78,375,377],{"href":376},"\u002Fsupabase-backups","das, was Care aufbewahrt",".\nLiegen sie in Replits eigener Datenbank, können wir sie nicht sichern, und was\ndu lesen solltest, bevor du es brauchst, ist, was Replits Datenbankwerkzeug für\neine Wiederherstellung anbietet. Nur 14 der 3.042 gescannten Replit-Apps haben\nüberhaupt ein Supabase-Projekt genannt, für die meisten gilt also der zweite\nFall.",[25,380,382],{"id":381},"der-fünf-minuten-check-für-deine-eigene-replit-app","Der Fünf-Minuten-Check für deine eigene Replit-App",[10,384,385],{},"Jeder Punkt ist eine URL, die du öffnest, oder eine Suche, die du ausführst.\nNimm ein privates Fenster, damit deine eigene Anmeldung nicht für einen Fremden\nantwortet.",[36,387,388,398,401,410,413],{},[39,389,390,391,393,394,397],{},"Öffne deine veröffentlichte Adresse mit ",[176,392,359],{}," am Ende, dann mit\n",[176,395,396],{},"\u002F.git\u002Fconfig",". Beides sollte scheitern. Zeigt eines davon Text, rotiere\nheute jeden Schlüssel darin.",[39,399,400],{},"Öffne auf dieselbe Weise eine deiner eigenen API-Routen, eine, die kein\nFremder lesen sollte. Antwortet sie, braucht diese Route eine Anmeldeprüfung.",[39,402,403,404,406,407,409],{},"Durchsuche dein Projekt nach ",[176,405,325],{}," und ",[176,408,328],{},". Jeder Treffer ist\nein Wert, den dein Build-Werkzeug absichtlich veröffentlicht, und jeder\ndavon muss ein Schlüssel sein, der veröffentlicht werden durfte.",[39,411,412],{},"Öffne deine laufende App und dann den Reiter „Sources“ in den\nEntwicklerwerkzeugen deines Browsers. Kannst du deine Originaldateien mit\nKommentaren lesen, sind Source-Maps an.",[39,414,415,416,82],{},"Oder lass den Scan das erledigen. Er führt diese vier und fünf weitere von\naußen aus, dauert etwa 20 Sekunden, braucht kein Konto und gibt für alles,\nwas er nicht beantworten konnte, „Konnte nicht prüfen“ aus und keinen Haken:\n",[78,417,419],{"href":418},"\u002Fsecurity-scanner","App scannen",[25,421,423],{"id":422},"was-ändert-sich-nachdem-du-erneut-veröffentlichst","Was ändert sich, nachdem du erneut veröffentlichst?",[10,425,426],{},"Alles Mögliche. Veröffentlichen ist auf Replit ein einziger Handgriff, eine\nÄnderung ist also in dem Moment live, in dem du sie machst, und zwischen dir und\ndem Internet gibt es keinen Deploy-Schritt, der eine Route abfängt, die ihre\nAnmeldeprüfung verloren hat, oder einen Schlüssel, der um Mitternacht eingefügt\nwurde, um an einem scheiternden Build vorbeizukommen. Ein Scan vom letzten Monat\nbeschreibt die App vom letzten Monat.",[10,428,429,433],{},[78,430,432],{"href":431},"\u002Fpricing","Reeve Monitor"," ist für diese Art App gebaut: jemand, der jede Stunde\nam Laden vorbeigeht und die Türen prüft. Er führt alle neun Checks jede Stunde\nauf bis zu drei Apps aus, prüft die Erreichbarkeit alle 60 Sekunden, sagt dir\nBescheid, wenn sich ein Ergebnis ändert, statt darauf zu warten, dass du\nnachsiehst, 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 beobachtet\nund sonst nichts, was für eine Replit-App meist die richtige Hälfte ist: Care,\nunser Backup-Tarif, hält ausschließlich eine Kopie einer Supabase-Datenbank, und\ndie meisten Replit-Apps halten ihre Daten woanders.",[25,435,437],{"id":436},"was-du-diese-woche-tun-solltest","Was du diese Woche tun solltest",[439,440,441],"key-takeaways",{},[442,443,444,452,455,463,466],"ul",{},[39,445,446,447,406,449,451],{},"Öffne ",[176,448,359],{},[176,450,396],{}," unter deiner veröffentlichten Adresse in einem privaten Fenster. Beides sollte scheitern.",[39,453,454],{},"Öffne deine eigenen API-Routen ohne Anmeldung. Jede Route, die mit privaten Daten antwortet, braucht eine Anmeldeprüfung und eine 401 für alle anderen.",[39,456,457,458,406,460,462],{},"Durchsuche das Projekt nach ",[176,459,325],{},[176,461,328],{},". Jeder Treffer wird absichtlich veröffentlicht und muss ein Schlüssel sein, der veröffentlicht werden durfte.",[39,464,465],{},"Schalte Source-Maps in deiner Build-Konfiguration aus, es sei denn, du willst deine Originaldateien im Browser lesbar haben.",[39,467,468],{},"Halte den Agenten von der laufenden Datenbank fern, und bewahre eine Kopie deiner Daten dort auf, wo er nicht hinkommt.",[10,470,471,472,476,477,481],{},"Die Schritt-für-Schritt-Anleitung für diese Plattform ist\n",[78,473,475],{"href":474},"\u002Fis-your-replit-app-safe","Ist deine Replit-App sicher",", und die\n",[78,478,480],{"href":479},"\u002Fchecklist","10-Minuten-Sicherheitscheckliste"," deckt ab, was sich bei jeder\nfrisch gestarteten App zu prüfen lohnt.",{"title":483,"searchDepth":484,"depth":484,"links":485},"",3,[486,488,489,490,491,492,493,494,495,496],{"id":27,"depth":487,"text":28},2,{"id":68,"depth":487,"text":69},{"id":240,"depth":487,"text":241},{"id":258,"depth":487,"text":259},{"id":302,"depth":487,"text":303},{"id":332,"depth":487,"text":333},{"id":363,"depth":487,"text":364},{"id":381,"depth":487,"text":382},{"id":422,"depth":487,"text":423},{"id":436,"depth":487,"text":437},"Sicherheitsgrundlagen","\u002Fblog\u002Fis-replit-safe\u002Fcover-1200x630.png","Das Replit-Logo auf weißer Kachel, ein Pfeil zu einer App als Seite mit Server dahinter, und ein Pfeil weiter zu drei Besuchern.","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.",false,"md",[504,507,510,513,516],{"q":505,"a":506},"Ist Replit sicher genug für ein echtes Produkt?","Als Host: Nichts in den 3.042 laufenden Replit-Apps, die wir gescannt haben, zeigte auf das Hosting. Jedes Zertifikat, das wir lesen konnten, war gültig, und keine Domain stand kurz vor dem Ablauf. Die Funde, die eine Note entschieden haben, saßen alle in der App, die der jeweilige Besitzer veröffentlicht hat, und sie haben bei jedem Builder, den wir gemessen haben, dieselbe Form. Ob dein Produkt dort sicher läuft, hängt davon ab, was deine App einem Besucher aushändigt, und das kannst du in etwa fünf Minuten prüfen.",{"q":508,"a":509},"Sind Replit Secrets wirklich geheim?","Für die Aufgabe, die sie erfüllen, ja. Der Wert wird verschlüsselt und aus deinen Projektdateien herausgehalten, sodass Teilen oder Forken des Projekts ihn nicht weitergibt. Was das Werkzeug nicht entscheiden kann, ist, wohin deine App den Wert danach trägt. Ein Schlüssel, den Code auf Replits Maschine liest, bleibt dort. Ein Schlüssel, den Code im Browser des Besuchers liest, wird in das eingebaut, was du veröffentlichst, egal wo er gespeichert war, und eine Variable namens VITE_ oder NEXT_PUBLIC_ ist genau das.",{"q":511,"a":512},"Können andere meinen Replit-Quellcode sehen?","Die Browser-Hälfte immer, denn ein Browser kann keine Seite zeichnen, die er nicht bekommen hat. Ob andere sie als deine Originaldateien oder als komprimierte Ausgabe sehen, hängt von Source-Maps ab, und 168 von 3.041 geprüften Replit-Apps haben welche veröffentlicht. Dein Server-Code bleibt auf Replit, es sei denn, eine private Datei wie .env oder .git\u002Fconfig hat eine öffentliche URL bekommen, was bei 7 von 3.023 Apps der Fall war.",{"q":514,"a":515},"Ist eine veröffentlichte Replit-App standardmäßig sicher?","Es gibt keine Voreinstellung, die sie sicher macht, und keine, die sie unsicher macht. 2.789 der 3.042 gescannten Apps bekamen ein A. Die übrigen hatten einen Fund, der aus dem Gebauten folgte: eine Route auf dem eigenen Server, die ohne Anmeldung geantwortet hat, ein Schlüssel im heruntergeladenen Code oder eine private Datei unter einer öffentlichen Adresse. Nichts am Hosting hat ein D oder F erzeugt.",{"q":517,"a":518},"Was ist das häufigste Sicherheitsproblem in Replit-Apps?","Abgesehen von Headern, die bei fast jeder App auf jedem Builder fehlen, ist es eine API-Route, die einem Fremden Daten liefert. 1.050 der 3.037 Replit-Apps, bei denen dieser Check antworten konnte, hatten mindestens eine. Eine Replit-App trägt meist ihren eigenen Server, hat also eigene Routen, die offen bleiben können, wo eine Lovable-App meist keine hat.","\u002Fblog\u002Fis-replit-safe\u002Fcard-800x500.png",[521,522,523,524,525,526,527],"ist replit sicher","replit sicherheit","replit app sicher","replit app sicherheit","sind replit apps sicher","replit deployment sicherheit","is replit safe",{},true,"\u002Fblog\u002Fis-replit-safe","2026-09-15",{"title":5,"description":500},"blog\u002Fis-replit-safe",[535,536,537],"Ist Replit sicher? Als Host war es nicht der Ort, an dem wir etwas gefunden haben. Jede der neun Apps von 3.042 mit der Note D oder F kam über etwas dorthin, das in der App selbst steckt.","Der typische Replit-Fund ist eine eigene API: 1.050 von 3.037 Apps hatten eine Route, die einem Fremden ohne Anmeldung Daten ausgehändigt hat, weil eine Replit-App meist mit eigenem Server ausgeliefert wird.","Von 219 Apps mit etwas Schlüsselförmigem im heruntergeladenen Code hielten drei einen Schlüssel, der ein Konto belastet. 2.789 der 3.042 bekamen ein A.","3pAMv6s0Da3UkB3FjqqAnymOrApVTAUi17Y_-q4Q_qM",[540,547,553,559,565,571,577,583,589,590,596,602,608,614,620,626,632,638,644,650,655,661,667,673,678,684,690,696,702,707,713,719,725,730,736,741,745,751,757,763,768,774],{"path":541,"title":542,"description":543,"published":544,"category":545,"image":546,"draft":501},"\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":548,"title":549,"description":550,"published":551,"category":497,"image":552,"draft":501},"\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":554,"title":555,"description":556,"published":557,"category":497,"image":558,"draft":501},"\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":560,"title":561,"description":562,"published":563,"category":497,"image":564,"draft":501},"\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":566,"title":567,"description":568,"published":569,"category":497,"image":570,"draft":501},"\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":572,"title":573,"description":574,"published":575,"category":497,"image":576,"draft":501},"\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":578,"title":579,"description":580,"published":581,"category":497,"image":582,"draft":501},"\u002Fblog\u002Fbase44-source-maps","Base44-Sicherheit: was ein Scan meldet und was du ändern kannst","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.","2026-09-17","\u002Fblog\u002Fbase44-source-maps\u002Fcard-800x500.png",{"path":584,"title":585,"description":586,"published":587,"category":497,"image":588,"draft":501},"\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":530,"title":5,"description":500,"published":531,"category":497,"image":519,"draft":501},{"path":591,"title":592,"description":593,"published":594,"category":545,"image":595,"draft":501},"\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":597,"title":598,"description":599,"published":600,"category":545,"image":601,"draft":501},"\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":603,"title":604,"description":605,"published":606,"category":545,"image":607,"draft":501},"\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":609,"title":610,"description":611,"published":612,"category":497,"image":613,"draft":501},"\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":615,"title":616,"description":617,"published":618,"category":497,"image":619,"draft":501},"\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":621,"title":622,"description":623,"published":624,"category":497,"image":625,"draft":501},"\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":627,"title":628,"description":629,"published":630,"category":497,"image":631,"draft":501},"\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":633,"title":634,"description":635,"published":636,"category":497,"image":637,"draft":501},"\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":639,"title":640,"description":641,"published":642,"category":497,"image":643,"draft":501},"\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":645,"title":646,"description":647,"published":648,"category":497,"image":649,"draft":501},"\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":250,"title":651,"description":652,"published":653,"category":497,"image":654,"draft":501},"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":656,"title":657,"description":658,"published":659,"category":497,"image":660,"draft":501},"\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":662,"title":663,"description":664,"published":665,"category":497,"image":666,"draft":501},"\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":668,"title":669,"description":670,"published":671,"category":545,"image":672,"draft":501},"\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":320,"title":674,"description":675,"published":676,"category":497,"image":677,"draft":501},"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":679,"title":680,"description":681,"published":682,"category":545,"image":683,"draft":501},"\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":685,"title":686,"description":687,"published":688,"category":497,"image":689,"draft":501},"\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":691,"title":692,"description":693,"published":694,"category":497,"image":695,"draft":501},"\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":697,"title":698,"description":699,"published":700,"category":497,"image":701,"draft":501},"\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":298,"title":703,"description":704,"published":705,"category":497,"image":706,"draft":501},"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":708,"title":709,"description":710,"published":711,"category":545,"image":712,"draft":501},"\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":714,"title":715,"description":716,"published":717,"category":545,"image":718,"draft":501},"\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":720,"title":721,"description":722,"published":723,"category":497,"image":724,"draft":501},"\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":309,"title":726,"description":727,"published":728,"category":497,"image":729,"draft":501},"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":731,"title":732,"description":733,"published":734,"category":545,"image":735,"draft":501},"\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":290,"title":737,"description":738,"published":739,"category":497,"image":740,"draft":501},"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":342,"title":742,"description":743,"published":739,"category":497,"image":744,"draft":501},"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":746,"title":747,"description":748,"published":749,"category":497,"image":750,"draft":501},"\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":752,"title":753,"description":754,"published":755,"category":545,"image":756,"draft":501},"\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":758,"title":759,"description":760,"published":761,"category":497,"image":762,"draft":501},"\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":764,"title":765,"description":766,"published":761,"category":545,"image":767,"draft":501},"\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":769,"title":770,"description":771,"published":772,"category":545,"image":773,"draft":501},"\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":775,"title":776,"description":777,"published":772,"category":497,"image":778,"draft":501},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","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]