[{"data":1,"prerenderedAt":865},["ShallowReactive",2],{"blog-de-lovable-security-scan":3,"blog-index-de":518},{"id":4,"title":5,"body":6,"category":474,"cover":475,"coverAlt":476,"description":477,"draft":478,"extension":479,"faq":480,"image":495,"keywords":496,"meta":506,"navigation":507,"ogTitle":508,"path":509,"published":510,"seo":511,"stem":512,"tldr":513,"updated":510,"__hash__":517},"blog_de\u002Fblog\u002Flovable-security-scan.md","Lovable Security Scan: das Eine, was er nicht beweist",{"type":7,"value":8,"toc":460},"minimark",[9,13,21,26,29,40,55,61,65,68,71,86,89,93,96,99,102,114,118,121,124,130,137,141,144,147,165,172,177,188,191,199,203,206,225,228,330,337,341,344,372,375,380,391,395,398,401,408,420,424,452],[10,11,12],"p",{},"Du klickst bei deiner Lovable-App auf Publish, und bevor sie rausgeht, läuft ein\nScan. Ein paar Sekunden später kommt er sauber zurück, oder mit einer Liste, und\nin beiden Fällen hältst du ein Ergebnis in der Hand, das du nicht einschätzen\nkannst. Ist das alles? Reicht das, um echte Menschen darauf zu lassen?",[10,14,15,16,20],{},"Und hier liegt der Punkt, den du vor der Entscheidung kennen solltest: ",[17,18,19],"strong",{},"der\nLovable Security Scan und ein Scan deiner veröffentlichten App lesen zwei\nverschiedene Dinge."," Der eine liest die Schlösser und die Verkabelung. Der\nandere geht hin und drückt die Klinke. Beide lohnen sich, und nur der zweite\nmacht das, was jeder Besucher deiner App den ganzen Tag macht.",[22,23,25],"h2",{"id":24},"prüft-lovable-meine-app-auf-sicherheitsprobleme","Prüft Lovable meine App auf Sicherheitsprobleme?",[10,27,28],{},"Ja, und es sind zwei davon. Beide sind kostenlos.",[10,30,31,32,35,36,39],{},"Der ",[17,33,34],{},"Quick Scan"," läuft bei jeder Veröffentlichung von selbst und ist in\nSekunden fertig. Der ",[17,37,38],{},"Deep Scan"," liest deinen gesamten Anwendungscode, und du\nstartest ihn selbst. Beide lesen dein Projekt von innen: deine\nDatenbankeinstellungen, die Zugriffsregeln an deinen Tabellen, deinen\nAbhängigkeitsbaum, deinen Code.",[10,41,42,43,50,51,54],{},"Alles Folgende stammt aus\n",[44,45,49],"a",{"href":46,"rel":47},"https:\u002F\u002Fdocs.lovable.dev\u002Ffeatures\u002Fsecurity",[48],"nofollow","Lovables eigener Sicherheitsdokumentation",",\ngelesen am ",[17,52,53],{},"24. September 2026",". Diese Funktion hat sich in einem Jahr mehr\nals einmal geändert, also achte bei jedem Artikel darauf, von wann er ist,\ndiesem hier eingeschlossen.",[56,57],"diagram",{"alt":58,"caption":59,"src":60},"Zwei Felder. Im linken enthält ein Kasten in einer Reihe eine Datenbank, ein Dokument, ein Code-Zeichen und einen Stapel Linien, darunter steht eine große Lupe im Kasten. Im rechten schickt eine veröffentlichte Seite einen Pfeil zu einer Datenbank außerhalb von ihr, drei Besucher warten auf der anderen Seite, und eine gleich große Lupe steht mitten unter ihnen im Freien.","Zwei Scans, zwei Standorte. Der im Kasten kann alles im Projekt öffnen. Der auf der Straße kann die App nur fragen, was sie herausgibt, und genau das tun die drei Leute neben ihm auch.","\u002Fblog\u002Flovable-security-scan\u002Ftwo-vantage-points-1600x700.png",[22,62,64],{"id":63},"was-der-lovable-security-scan-prüft","Was der Lovable Security Scan prüft",[10,66,67],{},"Drei Bereiche, als fester Satz Prüfungen, in Sekunden, bei jeder\nVeröffentlichung.",[10,69,70],{},"Lovables Dokumentation nennt sie eine Datenbankprüfung, ein Abhängigkeits-Audit\nund eine MCP-Server-Prüfung. Die Datenbankprüfung ist die für diesen Artikel\nentscheidende, und ihre Beschreibung lohnt genaues Lesen: Sie deckt Tabellen\nohne Zugriffskontrolle pro Datensatz ab, also ohne Row Level Security, außerdem\nZugriffsregeln, die jeden durchlassen, und abgeschalteten Schutz gegen geleakte\nPasswörter. Das Abhängigkeits-Audit sucht nach bekannten Schwachstellen in\ndeinen npm-Paketen. Die MCP-Prüfung sucht nach einem MCP-Server, den deine App\nohne Authentifizierung nach außen gibt.",[10,72,73,74,77,78,81,82,85],{},"Funde kommen nach Bereich gruppiert zurück und tragen die Kennzeichnung\n",[17,75,76],{},"Critical",", ",[17,79,80],{},"Warning"," oder ",[17,83,84],{},"Info",". Der Scan startet automatisch aus dem\nPublish-Dialog, und du kannst ihn außerdem in der Security-Ansicht des Projekts\nauslösen.",[10,87,88],{},"Manche Beiträge nennen das den Basic Scan. Die Schaltfläche in der\nSecurity-Ansicht heißt heute Run quick scan, und wenn ein Artikel und dein\nBildschirm sich beim Namen uneinig sind, ist dein Bildschirm der aktuelle.",[22,90,92],{"id":91},"was-der-deep-scan-zusätzlich-tut","Was der Deep Scan zusätzlich tut",[10,94,95],{},"Er liest deinen gesamten Anwendungscode, und er startet nicht von selbst.",[10,97,98],{},"Der Deep Scan enthält alles aus dem Quick Scan und schaut danach auf deine\neigene Logik, deine Berechtigungen und deine Daten. Lovable nennt sieben\nBereiche: Zugriffskontrolle und Autorisierung, unauthentifizierte und\nmissbrauchbare Endpunkte, unsichere Eingaben und Injection, geleakte Geheimnisse\nund Zugangsdaten, Zahlungen und Abrechnung, Authentifizierung und Kontosicherheit\nsowie offengelegte personenbezogene und sensible Daten. Er ist ebenfalls\nkostenlos.",[10,100,101],{},"Der Satz in der Dokumentation, nach dem du wirklich handeln solltest, ist\ndieser: Der Deep Scan läuft beim Arbeiten nicht automatisch. Er läuft, wenn du\nihn laufen lässt. Bei einem Projekt, in dem nie einer lief, wurde nie der Code\ngelesen, egal wie oft es veröffentlicht wurde, und der Publish-Dialog sagt dir\ndas nicht. Enterprise-Workspaces können Deep Scans über ausgewählte Projekte\nhinweg im Workspace Security center planen, und das ist die eine Konstellation,\nin der es ohne das Gedächtnis eines Menschen passiert.",[10,103,104,105,108,109,113],{},"Lovable kann auch selbst Korrekturen versuchen, während du baust oder über ",[17,106,107],{},"Try\nto fix all"," in der Security-Ansicht. Lies nach, was eine Korrektur geändert\nhat, bevor du sie übernimmst. Die Reparatur, die einen Row-Level-Security-Fehler\nverschwinden lässt, ist sehr oft eine Policy, die jeden durchlässt, und diese\nPolicy\n",[44,110,112],{"href":111},"\u002Fblog\u002Fsupabase-rls-on-but-table-still-public","erfüllt die Prüfung und lässt die Tabelle offen",".",[22,115,117],{"id":116},"die-kritik-von-2025-und-was-sich-geändert-hat","Die Kritik von 2025, und was sich geändert hat",[10,119,120],{},"Die erste Fassung dieser Prüfung sagte dir, dass eine Policy existiert. Sie\nsagte dir nicht, ob die Policy funktioniert, und der Forscher, der das\nursprüngliche Problem fand, hat das damals selbst geschrieben.",[10,122,123],{},"Im Mai 2025 veröffentlichte Matt Palmer CVE-2025-48757 über Lovable-Apps, deren\nSupabase-Tabellen keine oder eine zu großzügig geschriebene Row Level Security\nhatten. Lovable antwortete darauf mit der Prüfung vor dem Veröffentlichen.\nPalmers eigener Text beschrieb ihre Grenze in einem Klammersatz:",[125,126,127],"blockquote",{},[10,128,129],{},"Lovables Publish-Funktion hilft sicherzustellen, dass RLS-Policies in allen\nTabellen aktiviert sind, und meldet, wenn nicht (zeigt aber nicht unbedingt\nan, ob sie ausreichend sind).",[10,131,132,133,113],{},"Auf diese Lücke gibt die heutige Dokumentation eine Antwort: Sie nennt\nZugriffsregeln, die jeden durchlassen, ausdrücklich als etwas, das die\nDatenbankprüfung meldet. Nichts in diesem Artikel prüft diese Angabe nach. Wenn\ndu sie nachprüfen willst, leg eine Wegwerftabelle mit einer Policy an, die jeden\ndurchlässt, und schau, ob der Scan sie benennt. Die ausführliche Fassung des CVE\nsteht in ",[44,134,136],{"href":135},"\u002Fblog\u002Fis-lovable-safe","ist Lovable sicher",[22,138,140],{"id":139},"was-ein-scan-von-innen-nicht-beweisen-kann","Was ein Scan von innen nicht beweisen kann",[10,142,143],{},"Ob deine laufende App Zeilen an jemanden herausgibt, der nicht angemeldet ist.",[10,145,146],{},"Ein Schloss kann eingebaut, erfasst und in der Zeichnung korrekt sein, und die\nTür geht trotzdem auf. Eine Policy ist eine Aussage darüber, was passieren soll;\nwas tatsächlich passiert, entscheidet eine Anfrage. Drei Wege, auf denen eine\nRegel als vorhanden gilt und die Tabelle trotzdem antwortet:",[148,149,150,159,162],"ul",{},[151,152,153,154,158],"li",{},"Die Policy lässt jeden durch. Geschrieben als ",[155,156,157],"code",{},"using (true)",", ist sie eine\ngültige Policy, sie erfüllt die Anforderung, dass eine existiert, und sie gibt\njede Zeile an jeden Aufrufer zurück.",[151,160,161],{},"Die Policy deckt Lesen ab und sonst nichts. Das Auswählen wird geprüft,\nEinfügen und Ändern und Löschen wurden nie geschrieben, also kann jeder in\neine Tabelle schreiben, die niemand vollständig lesen kann.",[151,163,164],{},"Die Bedingung trifft auf mehr Leute zu als gedacht. Sie sollte einen einzigen\nKunden benennen und benennt jeden angemeldeten Besucher, oder jeden Besucher.",[10,166,167,168,171],{},"Jetzt der Teil, der darüber entscheidet, wie du ein grünes Ergebnis lesen\nsolltest. ",[17,169,170],{},"Von außen geben diese drei und eine Tabelle ganz ohne Schutz\ndieselbe Antwort",", nämlich Zeilen. Deine Nutzer können sie nicht\nauseinanderhalten. Alle anderen, die deine App öffnen, auch nicht.",[56,173],{"alt":174,"caption":175,"src":176},"Eine Kette von links nach rechts: eine Person, ein Pfeil zu einer veröffentlichten Seite, ein Pfeil zu einer Datenbank und ein roter Pfeil zu einem Feld mit drei Datenzeilen. Nirgends auf der Linie steht ein Schlüssel oder ein Schloss. Unter der Seite sitzt blass und mit nichts verbunden ein Projektkasten mit einer Datenbank, einem Dokument, einem Code-Zeichen und einem Stapel Linien.","Die Anfrage, die es entscheidet, und die Zeilen, mit denen sie zurückkam. Das Projekt sitzt unter der Seite und berührt die Linie an keiner Stelle, und darum kann nichts darin für das einstehen, was hier passiert ist.","\u002Fblog\u002Flovable-security-scan\u002Fthe-request-that-decides-1600x560.png",[10,178,179,180,183,184,113],{},"Zwischen dem 12. und 14. August 2026 haben wir dieselben neun externen Checks\nüber 30.998 laufende Apps laufen lassen, und 18.554 davon waren auf Lovable\nveröffentlicht. Von den Lovable-Apps, die ein Supabase-Projekt benannten,\nantworteten 3.553 klar genug für ein Urteil, und ",[17,181,182],{},"2.017 davon gaben Zeilen an\neine Anfrage heraus, die überhaupt keine Anmeldung trug",". Die Methode und jeder\nNenner stehen ",[44,185,187],{"href":186},"\u002Fresearch\u002Fvibe-coded-app-security-2026","im Bericht",[10,189,190],{},"Eine Ehrlichkeitsschranke zu dieser Zahl. Wir standen auf dem Gehweg, und wir\nhaben keinen Blick in eines dieser Projekte. Wir können berichten, was 2.017\nveröffentlichte Apps geantwortet haben. Wir können nicht berichten, wie viele\ndavon einen Scan laufen ließen oder was er ihnen sagte.",[10,192,193,194,198],{},"Deine eigene App beantwortet dieselbe Frage in etwa 20 Sekunden, und du musst\nuns nicht glauben, auf welcher Seite der 2.017 sie steht:\n",[44,195,197],{"href":196},"\u002Fsecurity-scanner","App scannen",". Der Scan fragt jede Tabelle nach der Anzahl\nder Zeilen, die ein Aufrufer ohne Anmeldung bekäme, liest die Zahl und hört\ndort auf, ohne eine Zeile zu holen.",[22,200,202],{"id":201},"was-ein-scan-von-außen-nicht-sehen-kann","Was ein Scan von außen nicht sehen kann",[10,204,205],{},"Die Klinke zu drücken sagt dir nichts über einen Raum, der keine Tür zur Straße\nhat, und davon gibt es vier.",[10,207,208,209,212,213,216,217,220,221,224],{},"Dein ",[17,210,211],{},"npm-Abhängigkeitsbaum"," steckt nicht in der Seite, die ein Browser lädt.\nDein ",[17,214,215],{},"serverseitiger Code",", einschließlich Edge Functions und der Frage, ob\neine Route prüft, wer da ruft, läuft an einem Ort, den wir nie erreichen. Eine\n",[17,218,219],{},"Tabelle, die dein Frontend nie benennt",", ist für uns unsichtbar, denn wir\nfinden Tabellennamen im Code, den deine App ausliefert, plus eine kurze Liste\nüblicher Namen, also wird eine Tabelle, die im Browser nirgends vorkommt und die\nniemand raten würde, nicht gefragt. Und ein ",[17,222,223],{},"MCP-Server"," ist nichts, was eine\nSeitenanfrage findet.",[10,226,227],{},"Lovables zwei Scans lesen zusammen alle vier. Unserer schreibt \"Konnte nicht\ngeprüft werden\", wenn er eine Frage nicht beantworten konnte, statt eines\nHäkchens.",[229,230,231,247],"table",{},[232,233,234],"thead",{},[235,236,237,241,244],"tr",{},[238,239,240],"th",{},"Worum es geht",[238,242,243],{},"Lovables Scan, innen",[238,245,246],{},"Ein Scan von außen",[248,249,250,262,273,284,293,302,311,320],"tbody",{},[235,251,252,256,259],{},[253,254,255],"td",{},"Row Level Security an einer Tabelle abgeschaltet",[253,257,258],{},"Ja",[253,260,261],{},"Nur an der Wirkung",[235,263,264,267,270],{},[253,265,266],{},"Eine Policy, die jeden durchlässt",[253,268,269],{},"Ja, laut Doku",[253,271,272],{},"Ja, an den Zeilen",[235,274,275,278,281],{},[253,276,277],{},"Was deine veröffentlichte App einem Fremden aushändigt",[253,279,280],{},"Nein",[253,282,283],{},"Ja, das ist die Aufgabe",[235,285,286,289,291],{},[253,287,288],{},"Deine npm-Abhängigkeiten",[253,290,258],{},[253,292,280],{},[235,294,295,298,300],{},[253,296,297],{},"Serverseitiger Code und Edge-Function-Anmeldung",[253,299,258],{},[253,301,280],{},[235,303,304,307,309],{},[253,305,306],{},"Eine Tabelle, die dein Frontend nie benennt",[253,308,258],{},[253,310,280],{},[235,312,313,316,318],{},[253,314,315],{},"Welcher Schlüssel im Code der Besucher gelandet ist",[253,317,258],{},[253,319,258],{},[235,321,322,325,328],{},[253,323,324],{},"Zertifikatsdatum, Domain-Datum und Seiten-Header",[253,326,327],{},"Nicht in seiner Liste",[253,329,258],{},[10,331,332,333,113],{},"Die Zeile darüber, was deine veröffentlichte App einem Fremden aushändigt, ist\nder Grund, beide laufen zu lassen, und um sie herum ist unser Scan gebaut. Die\nallgemeine Fassung davon, wo der Blick von außen endet, steht in\n",[44,334,336],{"href":335},"\u002Fblog\u002Fvibe-coding-security-scanner","was ein URL-Scan übersieht",[22,338,340],{"id":339},"beide-und-in-dieser-reihenfolge","Beide, und in dieser Reihenfolge",[10,342,343],{},"Der Scan von innen vor dem Veröffentlichen, der von außen danach, weil die\nbeiden Dinge in dieser Reihenfolge passieren.",[345,346,347,353,359,364],"ol",{},[151,348,349,352],{},[17,350,351],{},"Lass den Quick Scan beim Veröffentlichen laufen und lies ihn dann."," Es\nsind ein paar Sekunden, und er passiert ohnehin. Am Dialog vorbeizuklicken\nist der häufigste Weg, auf dem ein Critical-Fund in Produktion landet.",[151,354,355,358],{},[17,356,357],{},"Starte einen Deep Scan, bevor etwas Echtes live geht",", und noch einmal,\nnachdem du Anmeldung, Zahlungen oder eine Tabelle mit Personen hinzugefügt\nhast. Von selbst läuft er nicht.",[151,360,361],{},[17,362,363],{},"Veröffentlichen.",[151,365,366,369,370,113],{},[17,367,368],{},"Scanne die veröffentlichte Adresse von außen."," Unserer liest deine\nlaufende App so, wie ein Besucher es tut, dauert etwa 20 Sekunden, braucht\nkein Konto und benennt die Prüfungen, die er nicht abschließen konnte:\n",[44,371,197],{"href":196},[10,373,374],{},"In dieser Abfolge steckt eine Lücke, und mit der lohnt es sich zu planen. Der\nQuick Scan läuft, wenn du veröffentlichst. Das meiste, was eine Tabelle öffnet,\ngeht gar nicht durchs Veröffentlichen: Du änderst eine Einstellung im\nSupabase-Dashboard, du übernimmst um Mitternacht eine Policy, die dir ein\nAssistent ins Chatfenster geschrieben hat, du legst heute früh eine Tabelle an\nund die Seite, die sie liest, geht am Donnerstag raus. Nichts davon ist eine\nVeröffentlichung, also startet nichts davon einen Scan, und der Deep Scan wäre\nohnehin nie von selbst gelaufen.",[56,376],{"alt":377,"caption":378,"src":379},"Eine waagerechte Zeitleiste mit drei türkisen Punkten, von denen jeder nach oben zu einer Lupe in einem Kreis führt. Zwischen dem zweiten und dritten Punkt sitzt ein bernsteinfarbener Punkt, der nach unten zu einem Einstellungsschalter führt, und ab dort wird die Zeitleiste bis zum Ende bernsteinfarben und läuft geradewegs unter der dritten Lupe hindurch.","Jede Veröffentlichung startet einen Scan. Eine im Supabase-Dashboard geänderte Einstellung ist keine Veröffentlichung, und das Bernstein läuft über die nächste hinweg weiter, weil dieser Scan das Projekt liest und nicht die Tabelle.","\u002Fblog\u002Flovable-security-scan\u002Fwhen-each-one-runs-1600x600.png",[10,381,382,386,387,390],{},[44,383,385],{"href":384},"\u002Fpricing","Reeve Monitor"," übernimmt die Hälfte von außen an den Tagen, an denen\ndu nicht daran denkst. Er lässt alle neun Checks stündlich auf bis zu drei Apps\nlaufen, beobachtet, ob deine App überhaupt antwortet, sagt dir Bescheid, wenn\nsich ein Ergebnis ",[17,388,389],{},"ändert",", statt zu warten, bis du nachsiehst, und schickt am\nMonatsende einen Bericht.",[22,392,394],{"id":393},"ein-grünes-ergebnis-lesen","Ein grünes Ergebnis lesen",[10,396,397],{},"Ein sauberes Ergebnis heißt, dass jede Frage, die dieser Scan stellen konnte, an\ndem Tag sauber zurückkam. Das ist etwas wert, und es ist kein Urteil über deine\nApp.",[10,399,400],{},"Lovable schreibt denselben Vorbehalt in die eigene Dokumentation: Die Werkzeuge\nhelfen dabei, verbreitete Sicherheitsprobleme zu finden, und können keine\nvollständige Sicherheit garantieren. Unserer trägt ihn ebenfalls, denn eine\nautomatische externe Prüfung ist kein Audit, und eine leere Fundliste ist keine\nGarantie.",[10,402,403,404,407],{},"Die eine Regel für den Fall, dass die beiden nicht übereinstimmen: ",[17,405,406],{},"Wenn der\nScan von innen sauber ist und ein Scan von außen sagt, eine Tabelle habe auf\neine Anfrage ohne Anmeldung geantwortet, handle nach der Antwort von außen.","\nDiese Antwort bekommen deine Nutzer, und alle anderen bekommen sie auch. Geh hin\nund lies die Policy an dieser Tabelle.",[10,409,410,411,415,416,113],{},"Wenn deine App auf Supabase läuft, ist die Anleitung in Alltagssprache für diese\nPlattform ",[44,412,414],{"href":413},"\u002Fis-your-lovable-app-safe","ist deine Lovable-App sicher",", und die\nPrüfungen als Befehle zum Selbstausführen stehen in\n",[44,417,419],{"href":418},"\u002Fblog\u002Fsupabase-security-checker","der Supabase-Sicherheitsprüfung",[22,421,423],{"id":422},"was-du-diese-woche-tun-solltest","Was du diese Woche tun solltest",[425,426,427],"key-takeaways",{},[148,428,429,432,435,438,441,449],{},[151,430,431],{},"Lies das Ergebnis des Quick Scan beim Veröffentlichen, statt daran vorbeizuklicken, und behandle eine Critical-Kennzeichnung als etwas, das vor dem Rausgehen behoben wird.",[151,433,434],{},"Starte einen Deep Scan von Hand. Er läuft nicht von selbst, also wurde bei einem Projekt, in dem nie einer lief, auch nie der Code gelesen.",[151,436,437],{},"Scanne nach dem Veröffentlichen die laufende Adresse von außen. Das ist die einzige Prüfung, die die Anfrage eines Fremden stellt.",[151,439,440],{},"Lies die Policy an jeder Tabelle, in der Personen stehen. Eine, die jeden durchlässt, lässt die Tabelle offen, während das Dashboard sie als geschützt meldet.",[151,442,443,444,448],{},"Prüfe, ob der Schlüssel in deiner App der veröffentlichbare ist. ",[44,445,447],{"href":446},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","Welche API-Schlüssel im Frontend sicher sind"," zeigt, wie du die beiden unterscheidest.",[151,450,451],{},"Wenn die Antworten von innen und außen sich widersprechen, bekommen deine Nutzer die von außen.",[10,453,454,455,459],{},"Wenn deine Lovable-App Supabase nutzt, öffne ein privates Browserfenster und geh\nnoch vor Freitag die Liste unter Authentication und Policies durch.\n",[44,456,458],{"href":457},"\u002Fblog\u002Fcan-anyone-read-your-supabase-database","Kann jeder deine Supabase-Datenbank lesen","\nist derselbe Test, aufgeschrieben als Befehle zum Einfügen in ein Terminal.",{"title":461,"searchDepth":462,"depth":462,"links":463},"",3,[464,466,467,468,469,470,471,472,473],{"id":24,"depth":465,"text":25},2,{"id":63,"depth":465,"text":64},{"id":91,"depth":465,"text":92},{"id":116,"depth":465,"text":117},{"id":139,"depth":465,"text":140},{"id":201,"depth":465,"text":202},{"id":339,"depth":465,"text":340},{"id":393,"depth":465,"text":394},{"id":422,"depth":465,"text":423},"Sicherheitsgrundlagen","\u002Fblog\u002Flovable-security-scan\u002Fcover-1200x630.png","Ein Berichtsfeld mit einer Spalte aus Häkchen, dahinter eine Datenbank, die über den Bildrand läuft, mit Zeilen, die aus ihr treiben.","Lovable Security Scan: was Quick Scan und Deep Scan prüfen, wann welcher läuft, und das Eine, was kein Scan von innen beweisen kann.",false,"md",[481,483,486,489,492],{"q":25,"a":482},"Ja, und es sind zwei Scans. Der Quick Scan läuft bei jeder Veröffentlichung von selbst und ist in Sekunden fertig. Er deckt die Zugriffsregeln deiner Datenbank ab, deine npm-Abhängigkeiten und jeden MCP-Server, den deine App ohne Authentifizierung nach außen gibt. Der Deep Scan liest deinen gesamten Anwendungscode und muss von dir in der Security-Ansicht des Projekts gestartet werden. Beide sind kostenlos, und beide lesen dein Projekt statt deiner veröffentlichten App.",{"q":484,"a":485},"Was ist der Unterschied zwischen Quick Scan und Deep Scan?","Tempo und Tiefe. Der Quick Scan führt in Sekunden einen festen Satz Prüfungen aus, automatisch beim Veröffentlichen, und deckt deine Datenbankeinstellungen, deine Abhängigkeiten und die MCP-Freigabe ab. Der Deep Scan enthält alles aus dem Quick Scan und liest danach deinen Anwendungscode auf Probleme, die an deiner eigenen Logik und deinen Daten hängen: Zugriffskontrolle, unauthentifizierte Endpunkte, Injection, geleakte Zugangsdaten, Zahlungen, Kontosicherheit und offengelegte personenbezogene Daten. Der Deep Scan läuft beim Arbeiten nicht von selbst, also wurde bei einem Projekt, in dem nie einer lief, auch nie der Code gelesen.",{"q":487,"a":488},"Reicht der Lovable Security Scan aus?","Er ist eine echte Prüfung und sieht Dinge, die kein Werkzeug von außen sehen kann, etwa deinen Abhängigkeitsbaum und eine Tabelle, die dein Frontend nie benennt. Was er nicht kann, ist die Anfrage zu stellen, die deine Besucher stellen. Eine Policy kann existieren, gültig aussehen und trotzdem jede Zeile zurückgeben, und das entscheidet sich nur, indem jemand deine veröffentlichte App von außen ohne Anmeldung fragt. Lovable schreibt dasselbe in die eigene Dokumentation: Die Werkzeuge helfen dabei, verbreitete Sicherheitsprobleme zu finden, und können keine vollständige Sicherheit garantieren.",{"q":490,"a":491},"Warum findet ein externer Scanner Dinge, die Lovables Scan durchgelassen hat?","Weil die beiden verschiedene Dinge lesen. Ein Scan von innen liest dein Projekt: das Schema, die Policies, den Abhängigkeitsbaum, den Code. Ein Scan von außen liest, was die veröffentlichte App einem Fremden ohne Anmeldung aushändigt. Von außen geben eine Tabelle ganz ohne Schutz und eine Tabelle mit einer Policy, die jeden durchlässt, dieselbe Antwort, nämlich Zeilen. Diese Antwort bekommen deine Nutzer und alle anderen tatsächlich, also ist sie bei einer Abweichung die, nach der du handelst.",{"q":493,"a":494},"Brauche ich beide?","Sie beantworten verschiedene Fragen, also ersetzt der eine den anderen nicht. Die sinnvolle Reihenfolge ist die, in der die beiden Dinge passieren: Lass den Quick Scan beim Veröffentlichen laufen, starte einen Deep Scan, bevor etwas Echtes live geht und nachdem du Anmeldung, Zahlungen oder eine Tabelle mit Personen hinzugefügt hast, und scanne dann die veröffentlichte Adresse von außen. Ein Scan von außen dauert etwa 20 Sekunden und braucht kein Konto.","\u002Fblog\u002Flovable-security-scan\u002Fcard-800x500.png",[497,498,499,500,501,502,503,504,505],"lovable security scan","lovable sicherheitsscan","lovable deep scan","lovable quick scan","prüft lovable die sicherheit","lovable rls prüfung","lovable check vor veröffentlichung","lovable sicherheitsprüfung","reicht der lovable security scan",{},true,"Lovable Security Scan: was er nicht beweist","\u002Fblog\u002Flovable-security-scan","2026-09-24",{"title":5,"description":477},"blog\u002Flovable-security-scan",[514,515,516],"Der Lovable Security Scan sind eigentlich zwei Scans, beide kostenlos: ein Quick Scan, der bei jeder Veröffentlichung von selbst läuft, und ein Deep Scan, den du selbst startest und der deinen gesamten Anwendungscode liest.","Beide lesen dein Projekt von innen. Keiner von beiden stellt die Anfrage, die ein Fremder stellt, also kann keiner beweisen, was deine veröffentlichte App herausgibt.","Von den 3.553 Lovable-Apps, deren Supabase-Datenbank wir von außen fragen konnten, antworteten 2.017 auf eine Anfrage ohne Anmeldung. Lass den Scan von innen vor dem Veröffentlichen laufen und einen von außen danach.","hCKOXQlWWmcxhgjkisoUcCDcqaPbepkrdJRTL2SnAEk",[519,525,531,537,543,549,555,561,567,573,579,585,591,598,604,610,615,621,622,628,634,639,645,651,657,663,669,675,681,687,693,699,705,711,717,723,728,733,739,745,751,757,763,769,775,781,787,793,799,805,811,817,823,828,833,839,845,850,855,861],{"path":520,"title":521,"description":522,"published":523,"category":474,"image":524,"draft":478},"\u002Fblog\u002Fbase44-security-scan","Base44 Security Scan: das, was nur er sehen kann","Der Base44 Security Scan prüft sieben Arten von Problemen von innen. Hier ist die Hälfte, die er liest und sonst niemand, und die Hälfte, die er nie ansieht.","2026-10-10","\u002Fblog\u002Fbase44-security-scan\u002Fcard-800x500.png",{"path":526,"title":527,"description":528,"published":529,"category":474,"image":530,"draft":478},"\u002Fblog\u002Fapi-key-leaked-what-to-do","Dein API-Key wurde geleakt. Die richtige Reihenfolge","Ein API-Key wurde geleakt und du weißt nicht, was zuerst zu tun ist. Nicht jeder Key im Frontend ist ein Leck, und die Reihenfolge zählt mehr als das Tempo.","2026-10-09","\u002Fblog\u002Fapi-key-leaked-what-to-do\u002Fcard-800x500.png",{"path":532,"title":533,"description":534,"published":535,"category":474,"image":536,"draft":478},"\u002Fblog\u002Finfinite-recursion-in-policy-for-relation","\"Infinite recursion detected in policy\" ohne RLS abzuschalten","\"Infinite recursion detected in policy for relation\" heißt: Deine Policy hat die Tabelle gefragt, die sie schützt. So brichst du den Kreis.","2026-10-08","\u002Fblog\u002Finfinite-recursion-in-policy-for-relation\u002Fcard-800x500.png",{"path":538,"title":539,"description":540,"published":541,"category":474,"image":542,"draft":478},"\u002Fblog\u002Fno-api-key-found-in-request","\"No API key found in request\" in Supabase, und die falsche Lösung","\"No API key found in request\" heißt, deine Supabase-Anfrage kam ohne Schlüssel an. Die meisten Antworten zeigen stattdessen auf deine Datenbankregeln.","2026-10-07","\u002Fblog\u002Fno-api-key-found-in-request\u002Fcard-800x500.png",{"path":544,"title":545,"description":546,"published":547,"category":474,"image":548,"draft":478},"\u002Fblog\u002Fis-base44-safe","Ist Base44 sicher? Was 5.442 echte Base44-Apps zeigten","Ist Base44 sicher? Wir haben 5.442 laufende Base44-Apps mit neun Checks geprüft. Fast alle bekamen ein B, aus Gründen, die der Inhaber nie gewählt hat.","2026-10-06","\u002Fblog\u002Fis-base44-safe\u002Fcard-800x500.png",{"path":550,"title":551,"description":552,"published":553,"category":474,"image":554,"draft":478},"\u002Fblog\u002Fmove-a-secret-to-an-edge-function","API-Schlüssel verstecken: ab in eine Supabase Edge Function","Einen API-Schlüssel verstecken heißt, ihn aus dem Browser zu nehmen. Eine Supabase Edge Function ist der kleinste Ort dafür, und zwei Schritte zählen mehr.","2026-10-05","\u002Fblog\u002Fmove-a-secret-to-an-edge-function\u002Fcard-800x500.png",{"path":556,"title":557,"description":558,"published":559,"category":474,"image":560,"draft":478},"\u002Fblog\u002Fenv-file-exposed-on-your-server","Ist deine .env-Datei öffentlich? Zwölf Pfade zum Prüfen","Ist deine .env-Datei auf deinem eigenen Webserver öffentlich? Zwölf Adressen sagen es dir, und ein Treffer heißt: alles darin ist längst öffentlich.","2026-10-04","\u002Fblog\u002Fenv-file-exposed-on-your-server\u002Fcard-800x500.png",{"path":562,"title":563,"description":564,"published":565,"category":474,"image":566,"draft":478},"\u002Fblog\u002Fis-v0-safe","v0-Sicherheit: alle 1.790 gescannten v0-Apps bekamen ein A","v0-Sicherheit, gemessen an 1.790 laufenden v0-Apps: Jede bekam ein A. Nur 17 nannten eine Datenbank, und genau das misst das A vor allem.","2026-10-03","\u002Fblog\u002Fis-v0-safe\u002Fcard-800x500.png",{"path":568,"title":569,"description":570,"published":571,"category":474,"image":572,"draft":478},"\u002Fblog\u002Fis-bolt-safe","Ist Bolt sicher? Was 1.123 echte Bolt-Apps zeigten","Ist Bolt sicher? Wir haben 1.123 laufende Bolt-Apps mit neun Checks geprüft. Das Hosting war sauber. Die Funde waren Schlüssel und offene Tabellen in den Apps.","2026-10-02","\u002Fblog\u002Fis-bolt-safe\u002Fcard-800x500.png",{"path":574,"title":575,"description":576,"published":577,"category":474,"image":578,"draft":478},"\u002Fblog\u002Fis-supabase-down-or-your-app","Ist Supabase down oder liegt es an deiner App? So erkennst du es","Ist Supabase down oder liegt es an deiner App? Ein pausiertes Projekt, eine volle Datenbank und ein eigener Fehler sehen gleich aus. Vier Prüfungen helfen.","2026-10-01","\u002Fblog\u002Fis-supabase-down-or-your-app\u002Fcard-800x500.png",{"path":580,"title":581,"description":582,"published":583,"category":474,"image":584,"draft":478},"\u002Fblog\u002Fdoes-supabase-encrypt-my-data","Verschlüsselt Supabase meine Daten? Ja. Wovor das schützt","Verschlüsselt Supabase Daten? Ja: AES-256 im Ruhezustand, TLS bei der Übertragung, SOC 2 und ISO 27001. Was jedes abdeckt und welches Leck keines stoppt.","2026-09-30","\u002Fblog\u002Fdoes-supabase-encrypt-my-data\u002Fcard-800x500.png",{"path":586,"title":587,"description":588,"published":589,"category":474,"image":590,"draft":478},"\u002Fblog\u002Fsupabase-free-plan-limits","Supabase Gratis-Tarif: die Limits und was an jedem passiert","Die Limits des Supabase-Gratis-Tarifs: 500 MB Datenbank, 5 GB Egress und keine Backups. Was an jeder Grenze passiert und was $25 für Pro ändern.","2026-09-29","\u002Fblog\u002Fsupabase-free-plan-limits\u002Fcard-800x500.png",{"path":592,"title":593,"description":594,"published":595,"category":596,"image":597,"draft":478},"\u002Fblog\u002Ftest-your-supabase-backup","Teste dein Supabase-Backup, bevor du es brauchst","So testest du dein Supabase-Backup: in ein Übungsprojekt einspielen, Zeilen zählen, anmelden und die Zeile suchen, die einer abgeschnittenen Datei fehlt.","2026-09-28","Backups","\u002Fblog\u002Ftest-your-supabase-backup\u002Fcard-800x500.png",{"path":599,"title":600,"description":601,"published":602,"category":596,"image":603,"draft":478},"\u002Fblog\u002Fsupabase-backup-github-action","Kostenloses Supabase-Backup per GitHub Action, mit Haken","Eine Supabase-Backup-GitHub-Action kostet nichts und passt für viele Apps. Der Workflow, der richtige Connection String und das Egress pro Lauf.","2026-09-27","\u002Fblog\u002Fsupabase-backup-github-action\u002Fcard-800x500.png",{"path":605,"title":606,"description":607,"published":608,"category":596,"image":609,"draft":478},"\u002Fblog\u002Fdownload-your-supabase-backup","Warum du dein Supabase-Backup nicht herunterladen kannst","Dein Supabase-Backup kannst du auf aktuellen Projekten nicht herunterladen, weil die Tageskopie physisch ist. Wie du es prüfst und selbst eine Kopie hältst.","2026-09-26","\u002Fblog\u002Fdownload-your-supabase-backup\u002Fcard-800x500.png",{"path":611,"title":612,"description":613,"published":608,"category":474,"image":614,"draft":478},"\u002Fblog\u002Fsupabase-permission-denied-for-table","Supabase \"permission denied for table\": der fehlende Grant","Ab 30. Oktober antwortet eine neue Supabase-Tabelle mit \"permission denied for table\", bis du Zugriff erteilst. Der Grant aus der E-Mail ist die halbe Lösung.","\u002Fblog\u002Fsupabase-permission-denied-for-table\u002Fcard-800x500.png",{"path":616,"title":617,"description":618,"published":619,"category":474,"image":620,"draft":478},"\u002Fblog\u002Fopen-api-endpoint-exposed","Ist ein offener API-Endpunkt ein Sicherheitsproblem? Sieh ins JSON","Dein Scan hat einen offenen API-Endpunkt gemeldet. Ob das zählt, hängt davon ab, was zurückkam, und die meisten hier gehörten der Plattform.","2026-09-25","\u002Fblog\u002Fopen-api-endpoint-exposed\u002Fcard-800x500.png",{"path":509,"title":5,"description":477,"published":510,"category":474,"image":495,"draft":478},{"path":623,"title":624,"description":625,"published":626,"category":596,"image":627,"draft":478},"\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","\u002Fblog\u002Fsupabase-backup-auth-users\u002Fcard-800x500.png",{"path":629,"title":630,"description":631,"published":632,"category":474,"image":633,"draft":478},"\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":135,"title":635,"description":636,"published":637,"category":474,"image":638,"draft":478},"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":640,"title":641,"description":642,"published":643,"category":474,"image":644,"draft":478},"\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":646,"title":647,"description":648,"published":649,"category":474,"image":650,"draft":478},"\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":652,"title":653,"description":654,"published":655,"category":474,"image":656,"draft":478},"\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":658,"title":659,"description":660,"published":661,"category":474,"image":662,"draft":478},"\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":664,"title":665,"description":666,"published":667,"category":474,"image":668,"draft":478},"\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":670,"title":671,"description":672,"published":673,"category":474,"image":674,"draft":478},"\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":676,"title":677,"description":678,"published":679,"category":596,"image":680,"draft":478},"\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":682,"title":683,"description":684,"published":685,"category":596,"image":686,"draft":478},"\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":688,"title":689,"description":690,"published":691,"category":596,"image":692,"draft":478},"\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":694,"title":695,"description":696,"published":697,"category":474,"image":698,"draft":478},"\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":700,"title":701,"description":702,"published":703,"category":474,"image":704,"draft":478},"\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":706,"title":707,"description":708,"published":709,"category":474,"image":710,"draft":478},"\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":712,"title":713,"description":714,"published":715,"category":474,"image":716,"draft":478},"\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":718,"title":719,"description":720,"published":721,"category":474,"image":722,"draft":478},"\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":418,"title":724,"description":725,"published":726,"category":474,"image":727,"draft":478},"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":335,"title":729,"description":730,"published":731,"category":474,"image":732,"draft":478},"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":734,"title":735,"description":736,"published":737,"category":474,"image":738,"draft":478},"\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":740,"title":741,"description":742,"published":743,"category":474,"image":744,"draft":478},"\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":746,"title":747,"description":748,"published":749,"category":474,"image":750,"draft":478},"\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":752,"title":753,"description":754,"published":755,"category":596,"image":756,"draft":478},"\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":758,"title":759,"description":760,"published":761,"category":474,"image":762,"draft":478},"\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":764,"title":765,"description":766,"published":767,"category":596,"image":768,"draft":478},"\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":770,"title":771,"description":772,"published":773,"category":474,"image":774,"draft":478},"\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":776,"title":777,"description":778,"published":779,"category":474,"image":780,"draft":478},"\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":782,"title":783,"description":784,"published":785,"category":474,"image":786,"draft":478},"\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":788,"title":789,"description":790,"published":791,"category":474,"image":792,"draft":478},"\u002Fblog\u002Fcors-wildcard-security-risk","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":794,"title":795,"description":796,"published":797,"category":596,"image":798,"draft":478},"\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":800,"title":801,"description":802,"published":803,"category":596,"image":804,"draft":478},"\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":806,"title":807,"description":808,"published":809,"category":474,"image":810,"draft":478},"\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":812,"title":813,"description":814,"published":815,"category":474,"image":816,"draft":478},"\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend","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":818,"title":819,"description":820,"published":821,"category":596,"image":822,"draft":478},"\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":457,"title":824,"description":825,"published":826,"category":474,"image":827,"draft":478},"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":829,"title":830,"description":831,"published":826,"category":474,"image":832,"draft":478},"\u002Fblog\u002Fsource-maps-exposed-in-production","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":834,"title":835,"description":836,"published":837,"category":474,"image":838,"draft":478},"\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":840,"title":841,"description":842,"published":843,"category":596,"image":844,"draft":478},"\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":111,"title":846,"description":847,"published":848,"category":474,"image":849,"draft":478},"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":851,"title":852,"description":853,"published":848,"category":596,"image":854,"draft":478},"\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":856,"title":857,"description":858,"published":859,"category":596,"image":860,"draft":478},"\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":446,"title":862,"description":863,"published":859,"category":474,"image":864,"draft":478},"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",1791618966337]