[{"data":1,"prerenderedAt":656},["ShallowReactive",2],{"blog-de-vibe-coding-security-scanner":3,"blog-index-de":413},{"id":4,"title":5,"body":6,"category":365,"cover":366,"coverAlt":367,"description":368,"draft":369,"extension":370,"faq":371,"image":389,"keywords":390,"meta":401,"navigation":402,"ogTitle":403,"path":404,"published":405,"seo":406,"stem":407,"tldr":408,"updated":405,"__hash__":412},"blog_de\u002Fblog\u002Fvibe-coding-security-scanner.md","Vibe-Coding-Security-Scanner: was ein URL-Scan übersieht",{"type":7,"value":8,"toc":353},"minimark",[9,13,21,24,29,32,35,38,41,45,48,126,132,135,144,148,151,157,163,169,175,178,182,185,188,193,196,209,213,216,278,285,288,292,295,298,301,311,315,337,345],[10,11,12],"p",{},"Du gibst die Adresse deiner App bei einem Scanner ein, wartest etwa zwanzig\nSekunden, und ein Buchstabe kommt zurück. A, vielleicht C. Dann kommt die Frage,\nauf die es wirklich ankommt: Heißt das jetzt, dass meine App in Ordnung ist?",[10,14,15,16,20],{},"Hier ist der Teil, den die meisten Werkzeuge in dieser Kategorie dich selbst\nherausfinden lassen. ",[17,18,19],"strong",{},"Ein Vibe-Coding-Security-Scanner liest deine App von der\nStraße aus."," Er sieht, was der Browser jedes Besuchers sieht, und das ist\nerstaunlich viel, und an deiner Haustür ist Schluss. Was dein Server im\nVerborgenen tut, bleibt auch vor dem Scanner verborgen.",[10,22,23],{},"Zu wissen, wo diese Linie verläuft, ist das, was einen Scan lohnend macht. Ein A\nsagt dir, dass die Türen zur Straße hin zu waren, als wir nachgesehen haben, und\nes sagt überhaupt nichts über das Zimmer dahinter.",[25,26,28],"h2",{"id":27},"was-ist-ein-vibe-coding-security-scanner","Was ist ein Vibe-Coding-Security-Scanner?",[10,30,31],{},"Ein Werkzeug, das deine laufende App so lädt wie ein Besucher, und dann liest,\nwas zurückkam.",[10,33,34],{},"Du gibst ihm eine URL. Er fragt nicht nach deinem Quellcode, deinem Repository,\ndeinem Datenbankpasswort oder einem Konto bei dem Builder, den du benutzt hast.\nEr holt deine Seite, lässt das JavaScript laufen, damit er den Code sieht, den\ndeine App tatsächlich ausliefert, liest die Header, die mit der Antwort kamen,\nsieht sich dein Zertifikat an und stellt deiner Datenbank und deinem\nDateispeicher ein paar Fragen, die jeder Fremde stellen könnte.",[10,36,37],{},"Dann schreibt er auf, was geantwortet hat. Das ist die ganze Form der Sache, und\ndeshalb dauert das zwanzig Sekunden und keine Woche.",[10,39,40],{},"Diese Kategorie gibt es, weil Apps aus Lovable, Bolt, v0, Cursor, Replit,\nWindsurf und Base44 an derselben kleinen Zahl von Stellen schiefgehen, und fast\nalle diese Stellen sind von außen sichtbar. Ein geheimer Key im Bundle. Eine\nTabelle, die einem Fremden antwortet. Ein Storage-Bucket, der seinen eigenen\nInhalt auflistet. Niemand braucht deinen Quellcode, um eines davon zu finden,\ndenn deine App reicht sie jedem Besucher von sich aus.",[25,42,44],{"id":43},"was-ein-scan-tatsächlich-liest","Was ein Scan tatsächlich liest",[10,46,47],{},"Fünf Oberflächen, und vier davon laden deine eigenen Besucher herunter, ohne es\nzu merken.",[49,50,51,67],"table",{},[52,53,54],"thead",{},[55,56,57,61,64],"tr",{},[58,59,60],"th",{},"Was er liest",[58,62,63],{},"Woher das kommt",[58,65,66],{},"Was das findet",[68,69,70,82,93,104,115],"tbody",{},[55,71,72,76,79],{},[73,74,75],"td",{},"Dein JavaScript-Bundle",[73,77,78],{},"Die Dateien, die ein Browser lädt, um deine App auszuführen",[73,80,81],{},"Keys im Browser, die API-Pfade, die deine App aufruft, Tabellennamen, die sie benutzt",[55,83,84,87,90],{},[73,85,86],{},"Deine Response-Header",[73,88,89],{},"Kommen mit jeder Seite mit, die dein Hoster ausliefert",[73,91,92],{},"Fehlende Browser-Schutzmechanismen, eine Regel, die Anfragen von jeder Website beantwortet",[55,94,95,98,101],{},[73,96,97],{},"Die Antworten der Datenbank",[73,99,100],{},"Dieselbe Projekt-API, die deine App selbst aufruft",[73,102,103],{},"Eine Tabelle, die Zeilen an eine Anfrage ohne Anmeldung herausgibt",[55,105,106,109,112],{},[73,107,108],{},"Deine Storage-Buckets",[73,110,111],{},"Dieselbe öffentliche Storage-API, über die deine App lädt",[73,113,114],{},"Ein Bucket, der einem Fremden seine Dateien auflistet",[55,116,117,120,123],{},[73,118,119],{},"Zertifikat und Domain",[73,121,122],{},"Der TLS-Handshake und der öffentliche Registry-Eintrag",[73,124,125],{},"Ein Zertifikat kurz vor Ablauf, eine Domain kurz vor dem Verfall",[127,128],"diagram",{"alt":129,"caption":130,"src":131},"Eine Scanner-Marke links erreicht fünf Flächen über durchgezogene Akzentlinien. Eine senkrechte Linie durchzieht das Bild, und dahinter liegen vier weitere Flächen als gestrichelte Umrisse, deren Linien jeweils an der Trennlinie enden und dort ein Kreuz tragen.","Fünf Oberflächen kommen im Browser an, also kann ein Scan sie lesen. Die vier hinter der Linie verlassen deinen Server nie, also kann nichts von außen sie lesen.","\u002Fblog\u002Fvibe-coding-security-scanner\u002Fwhere-the-scan-stops-1600x820.png",[10,133,134],{},"Das Bundle ist das, was die Leute überrascht. Der Code deiner App muss im\nBrowser ankommen, bevor er dort laufen kann, also kommt auch jeder Key darin an,\nzusammen mit den API-Pfaden, die er aufruft, und oft den Namen der Tabellen, die\ner liest. Ein Scanner drückt dasselbe F12, das ein neugieriger Besucher drücken\nwürde. Er ist nur schneller, und er liest jede Datei statt der ersten.",[10,136,137,138,143],{},"Die Frage an die Datenbank ist die, bei der alle mit einem Eingriff rechnen, und\nsie ist das Zahmste auf der Liste. Um herauszufinden, ob eine Tabelle für Fremde\nlesbar ist, fragt unserer die API nach einer Anzahl der Zeilen und liest die Zahl\naus einem Response-Header. Eine Zahl über null heißt, dass diese Zeilen\nerreichbar sind. Es wird nie eine Zeile geholt, und der Key, mit dem er fragt,\nist der veröffentlichbare, der ohnehin schon in deinem Bundle liegt und\n",[139,140,142],"a",{"href":141},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","dort auch hingehört",".",[25,145,147],{"id":146},"die-vier-dinge-die-ein-url-scan-nicht-sehen-kann","Die vier Dinge, die ein URL-Scan nicht sehen kann",[10,149,150],{},"Alles, was auf deinem Server passiert, denn nichts davon wird jemals an einen\nBrowser geschickt.",[10,152,153,156],{},[17,154,155],{},"Deinen Servercode."," Edge Functions, API-Routen, Datenbankfunktionen, alles,\nwas in Supabase oder bei deinem Hoster läuft. Ein Scanner kann einen Endpunkt\naufrufen und lesen, was zurückkommt. Den Code, der das erzeugt hat, kann er\nnicht lesen, also bleibt ein Fehler, der nur bei bestimmten Eingaben auftritt,\nunsichtbar.",[10,158,159,162],{},[17,160,161],{},"Deine Umgebungsvariablen."," Die Keys, die du auf dem Server gelassen hast, und\ngenau dorthin gehören sie. Ein Scan kann dir sagen, dass er in deinem Bundle\nkein Geheimnis gefunden hat. Er kann nicht bestätigen, dass das Geheimnis richtig\nabgelegt ist, denn er sieht den Ort nie, an dem du es abgelegt hast.",[10,164,165,168],{},[17,166,167],{},"Deine Versionsgeschichte."," Ein Key, den du im März eingecheckt und im April\nentfernt hast, ist aus deiner App verschwunden und liegt weiter in deinem\nRepository. Wer dieses Repository sehen kann, kann ihn weiter lesen, und kein\nnoch so gründlicher Blick auf deine laufende Website fördert ihn zutage.",[10,170,171,174],{},[17,172,173],{},"Die Logik deiner App."," Ob ein angemeldeter Nutzer die Bestellung eines\nanderen öffnen kann, indem er eine Zahl in der Adresse ändert. Ob ein Formular\neinen Preis akzeptiert, den der Browser ihm geschickt hat. Das sind\nEntscheidungen deiner App darüber, was erlaubt ist, und um sie zu erwischen,\nmuss man sich anmelden und Dinge ausprobieren, und das ist ein Penetrationstest.",[10,176,177],{},"Es gibt eine fünfte Grenze, die uns gehört und nicht der Kategorie, und es lohnt\nsich, sie zu kennen, bevor du einen unserer Berichte liest. Supabase liefert die\nListe der Tabellen eines Projekts nicht mehr an einen veröffentlichbaren Key\naus, also hat ein Scanner keine Möglichkeit mehr zu fragen, wie deine Tabellen\nheißen. Unserer arbeitet stattdessen mit drei Quellen: dem Projektindex bei\nälteren Projekten, wo er noch antwortet, den Tabellennamen, die er in deinem\neigenen Bundle findet, und einer Liste von sechsundzwanzig Namen, die in\nvibe-coded Apps häufig vorkommen. Eine offene Tabelle mit einem ungewöhnlichen\nNamen, der in deinem Frontend-Code nie auftaucht, erreichen wir nicht. Supabases\neigener Advisor erreicht sie, und das ist der Vergleich zwei Abschnitte weiter\nunten.",[25,179,181],{"id":180},"heißt-ein-sauberer-scan-dass-meine-app-sicher-ist","Heißt ein sauberer Scan, dass meine App sicher ist?",[10,183,184],{},"Nein. Es heißt, dass jede Frage, die der Scan von außen stellen konnte, sauber\nzurückkam, und das ist ein kleinerer Satz, als er klingt.",[10,186,187],{},"Ein Teil des Grundes sind die vier blinden Flecken oben. Der andere Teil ist,\ndass eine Prüfung auf drei Arten enden kann und nur eine davon ein Bestehen ist.\nEine Prüfung findet etwas. Eine Prüfung fragt und bekommt ein klares Nein. Oder\neine Prüfung bekommt überhaupt keine Antwort, weil die Anfrage abgelaufen ist,\nder Host sie abgelehnt hat oder die Seite nie fertig geladen wurde.",[127,189],{"alt":190,"caption":191,"src":192},"Eine Berichtsfläche mit fünf Zeilen. Drei tragen einen grünen Haken, eine ein rotes Kreuz, und die letzte hat dort, wo ein Zeichen stünde, nur eine gestrichelte Linie und überhaupt kein Urteil.","Nach dem dritten Ausgang suchst du. Eine Prüfung, die keine Antwort bekam, wird als keine Antwort gezeichnet, denn ein Haken dort ist ein Versprechen zu einer Frage, die niemand stellen konnte.","\u002Fblog\u002Fvibe-coding-security-scanner\u002Fthree-endings-1600x760.png",[10,194,195],{},"Dieser dritte Ausgang entscheidet darüber, ob man einem Bericht trauen kann, und\ner ist der, den man am leichtesten stillschweigend zu einem Haken aufrundet.\nUnserer schreibt \"Konnte nicht geprüft werden\" in die Zeile und lässt deine Note\nin Ruhe. Ein falscher Haken wäre das Schädlichste, was dieser Scanner auf einen\nBildschirm bringen könnte, denn du würdest danach handeln.",[10,197,198,199,203,204,208],{},"Dieselbe Ehrlichkeit ist es, die unsere eigenen veröffentlichten Zahlen weniger\nalarmierend macht, als sie zunächst aussehen. Zwischen dem 12. und 14. August\n2026 haben wir diese Prüfungen über\n",[139,200,202],{"href":201},"\u002Fresearch\u002Fvibe-coded-app-security-2026","30.998 laufende vibe-coded Apps"," laufen\nlassen, und 99 % davon kamen mit mindestens einem Befund zurück. Fast alles\ndavon ist eine einzige Zeile: Browser-Sicherheitsheader, die die Hosting-Plattform\nnie setzt und die die meisten Besitzer auf einer Builder-Subdomain\n",[139,205,207],{"href":206},"\u002Fblog\u002Fmissing-security-headers","nicht selbst einschalten können",". Sie zu zählen\nist richtig. 99 % als \"fast jede App ist in Gefahr\" zu lesen, ist es nicht.",[25,210,212],{"id":211},"url-scan-repo-scan-oder-supabases-eigener-advisor","URL-Scan, Repo-Scan oder Supabases eigener Advisor?",[10,214,215],{},"Sie lesen drei verschiedene Dinge, die nützliche Frage ist also, welches davon\ndas Problem sehen kann, das du hast.",[49,217,218,234],{},[52,219,220],{},[55,221,222,225,228,231],{},[58,223,224],{},"Art",[58,226,227],{},"Was es liest",[58,229,230],{},"Was es von dir braucht",[58,232,233],{},"Wo es blind ist",[68,235,236,250,264],{},[55,237,238,241,244,247],{},[73,239,240],{},"URL-Scanner",[73,242,243],{},"Deine laufende App, von außen",[73,245,246],{},"Eine URL",[73,248,249],{},"Alles, was dein Server für sich behält",[55,251,252,255,258,261],{},[73,253,254],{},"Repository-Scanner",[73,256,257],{},"Deinen Quellcode und seine Geschichte",[73,259,260],{},"Zugang zu deinem Repo",[73,262,263],{},"Ob dieser Code ausgeliefert ist und was deine Regeln im Betrieb tun",[55,265,266,269,272,275],{},[73,267,268],{},"Supabase Security Advisor",[73,270,271],{},"Die Konfiguration dieses Projekts",[73,273,274],{},"Dein Supabase-Konto",[73,276,277],{},"Alles außerhalb des Projekts: Bundle, Header, andere Anbieter",[10,279,280,281,143],{},"Sie überschneiden sich weit weniger, als die Namen vermuten lassen. Supabases\nAdvisor durchsucht dein Projekt und meldet Konfigurationsprobleme, darunter\nTabellen mit falsch eingerichteter Row Level Security. Ein URL-Scan liest die\nFolge davon, nämlich ob diese Zeilen gerade jetzt bei Fremden ankommen. Die\nbeiden gehen häufiger auseinander, als man erwarten würde, denn\n",[139,282,284],{"href":283},"\u002Fblog\u002Fsupabase-rls-on-but-table-still-public","die Einstellung einzuschalten heißt noch nicht, geschützt zu sein",[10,286,287],{},"Ein Repository-Scanner ist der einzige der drei, der den Key finden kann, den du\nletzten Monat gelöscht hast. Er ist auch der einzige, der dir nicht sagen kann,\nob der Code, den er gerade gelesen hat, der Code ist, den du ausgeliefert hast.",[25,289,291],{"id":290},"wie-du-die-note-liest","Wie du die Note liest",[10,293,294],{},"Der Buchstabe wird vom schlimmsten einzelnen Befund im Bericht gedeckelt, eine\ngute Punktzahl rettet also nie einen ernsten.",[10,296,297],{},"Jeder Scan startet bei 100. Ein kritischer Befund kostet 40 Punkte, ein hoher\n15, ein mittlerer 5, ein niedriger 1. Dann sitzt eine Obergrenze über der\nRechnung: Ein kritischer Befund deckelt die Note bei D, zwei deckeln sie bei F,\nund ein einzelner hoher Befund deckelt sie bei C. Eine ansonsten aufgeräumte App\nmit einer einzigen offenen Tabelle kommt als D heraus, und das ist so gewollt.",[10,299,300],{},"Was du richtig gemacht hast, steht im Bericht und kostet dich nichts. Dein\nveröffentlichbarer Supabase-Key im Bundle wird als korrekt aufgeführt, denn dafür\nist er da, und ihn rot anzumalen ist die Art, wie ein Werkzeug dir beibringt, Rot\nzu ignorieren.",[302,303,305],"callout",{"type":304},"warn",[10,306,307,310],{},[17,308,309],{},"Eine Note beschreibt die App, die live war, als du gefragt hast."," Row Level\nSecurity wird abgeschaltet, damit eine Seite lädt, ein Server-Key wird ins\nFrontend kopiert, damit ein Feature heute Abend rausgeht, ein Bucket wird für\neinen Upload geöffnet und bleibt offen. Keines davon meldet sich, und jedes\nreicht, um eine Note zwischen einem Dienstag und dem nächsten von A auf F zu\nbewegen.",[25,312,314],{"id":313},"was-du-mit-einem-scan-ergebnis-machst","Was du mit einem Scan-Ergebnis machst",[316,317,318],"key-takeaways",{},[319,320,321,325,328,331,334],"ul",{},[322,323,324],"li",{},"Lies zuerst die Zeilen, in denen \"Konnte nicht geprüft werden\" steht. Das sind die offenen Fragen, und sie sind kein Bestehen.",[322,326,327],{},"Arbeite nach Schweregrad. Ein kritischer Befund heißt, dass heute jemand an deine Daten kommt; ein fehlender Header ist eine Einstellung, die niemand eingeschaltet hat.",[322,329,330],{},"Kümmere dich getrennt um das Innere: geheime Keys auf dem Server lassen, die eigene Versionsgeschichte nach gelöschten Keys durchsuchen und dich als Testnutzer anmelden, um zu sehen, woran der herankommt.",[322,332,333],{},"Scanne nach jedem Deploy erneut, und immer wenn jemand eine Datenbankregel anfasst. Das ist die Änderung, von der dir nichts erzählt.",[322,335,336],{},"Wenn deine App Zahlungen abwickelt oder Gesundheitsdaten hält, buche irgendwann einen Penetrationstest. Eine automatische externe Prüfung ist kein Audit, und keine Abwesenheit von Befunden ist eine Garantie.",[10,338,339,340,344],{},"Unser eigener ",[139,341,343],{"href":342},"\u002Fsecurity-scanner","kostenloser Website-Security-Scanner"," führt\nneun rein lesende Prüfungen auf jeder laufenden URL aus, in etwa zwanzig\nSekunden, ohne Konto. Er liest, er schreibt nie, und er meldet sich nie an.",[10,346,347,348,352],{},"Wenn du das lieber zuerst von Hand durchgehen willst: Die\n",[139,349,351],{"href":350},"\u002Fchecklist","10-Minuten-Sicherheitscheckliste"," deckt dasselbe Feld in der\nReihenfolge ab, in der es sich lohnt.",{"title":354,"searchDepth":355,"depth":355,"links":356},"",3,[357,359,360,361,362,363,364],{"id":27,"depth":358,"text":28},2,{"id":43,"depth":358,"text":44},{"id":146,"depth":358,"text":147},{"id":180,"depth":358,"text":181},{"id":211,"depth":358,"text":212},{"id":290,"depth":358,"text":291},{"id":313,"depth":358,"text":314},"Sicherheitsgrundlagen","\u002Fblog\u002Fvibe-coding-security-scanner\u002Fcover-1200x630.png","Ein hell erleuchtetes App-Fenster von vorn, dahinter zwei weitere Fenster, die in den Schatten zurücktreten und unlesbar bleiben.","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.",false,"md",[372,374,377,380,383,386],{"q":28,"a":373},"Ein Werkzeug, das deine laufende App so lädt wie ein Besucher und liest, was zurückkommt: das JavaScript, das deine App an den Browser ausliefert, die Header, die dein Hoster mitschickt, das Zertifikat und die Antworten, die deine Datenbank und dein Dateispeicher einer Anfrage von einem Fremden geben. Er braucht eine URL und sonst nichts. Er berichtet, was er auf der öffentlichen Oberfläche deiner App gefunden hat, und genau dort gehen mit KI gebaute Apps am häufigsten schief.",{"q":375,"a":376},"Ist es sicher, meine eigene App zu scannen?","Ja, solange der Scanner nur liest. Unserer stellt dieselbe Art von Anfragen wie ein gewöhnlicher Besucher, meldet sich nie an, schreibt, erstellt oder löscht nirgends etwas und lädt nie die Daten deiner Nutzer herunter. Um zu testen, ob eine Datenbanktabelle lesbar ist, fragt er die Anzahl der Zeilen ab und liest die Zahl, ohne eine einzige Zeile zu holen. Der Verkehr sind eine Handvoll Anfragen, also weniger als eine Person, die eine Minute auf deiner Website unterwegs ist.",{"q":378,"a":379},"Braucht ein Scan meinen Quellcode oder mein Datenbankpasswort?","Nein. Ein URL-Scanner arbeitet vollständig von außen, es gibt also nichts zu verbinden und keine Zugangsdaten zu übergeben. Das ist zugleich seine Grenze: Er sieht nur, was deine App ohnehin jedem Besucher zeigt. Ein Werkzeug, das dein Repository liest oder sich mit deinem Datenbankkonto verbindet, sieht andere Dinge, und der Artikel oben stellt die drei nebeneinander.",{"q":381,"a":382},"Funktioniert das mit Lovable, Bolt, Cursor, Replit, v0, Windsurf und Base44?","Ja, und mit allem anderen, das eine Website ins Netz stellt, denn der Scan sieht sich an, was live ist, und nicht, was es geschrieben hat. Der Builder zählt für die Behebung und nicht für die Prüfung: Die Reparatur einer offenen Tabelle ist in Lovable eine andere Klickfolge als in Replit, und deshalb nennt der Fix-Text deinen Builder.",{"q":384,"a":385},"Was prüft ein Security-Scanner nicht?","Alles, was auf deinem Server bleibt. Deinen Servercode und deine Datenbankfunktionen, die Umgebungsvariablen, die du aus dem Browser herausgehalten hast, den Key, den du eingecheckt und später aus dem Repository gelöscht hast, und Fehler in deiner eigenen Logik, etwa dass ein angemeldeter Nutzer die Bestellung eines anderen laden kann, indem er eine Zahl in der Adresse ändert. Um die letzte Gruppe zu finden, muss man sich anmelden und Dinge ausprobieren, und das ist ein Penetrationstest und kein Scan.",{"q":387,"a":388},"Ist ein Vibe-Coding-Security-Scanner kostenlos?","Unserer ist es, jedenfalls der Scan selbst: Du bekommst Note, Punktzahl und Anzahl der Befunde in etwa 20 Sekunden auf den Bildschirm, ohne Konto, und die ausführlichen Befunde samt Behebung, nachdem du eine E-Mail-Adresse angegeben hast. Bezahlte Pläne gibt es für das, was ein einmaliger Scan nicht kann, nämlich zu merken, wenn sich nächsten Monat etwas ändert. Eine Note stimmt in der Sekunde, in der du sie nimmst.","\u002Fblog\u002Fvibe-coding-security-scanner\u002Fcard-800x500.png",[391,392,393,394,395,396,397,398,399,400],"vibe coding security scanner","vibe code scanner","ki-app security scanner","security scanner für ki-generierte apps","lovable app auf sicherheitslücken scannen","bolt app sicherheitsscan","replit app security scanner","kostenloser website security scanner","app auf offengelegte api-keys prüfen","ist meine vibe-coded app sicher",{},true,"Was ein Vibe-Coding-Security-Scanner übersieht","\u002Fblog\u002Fvibe-coding-security-scanner","2026-09-05",{"title":5,"description":368},"blog\u002Fvibe-coding-security-scanner",[409,410,411],"Ein Vibe-Coding-Security-Scanner liest das, was die Browser deiner Besucher ohnehin herunterladen: dein Bundle, deine Header, dein Zertifikat und die Antworten, die deine Datenbank einem Fremden gibt.","Das deckt genau die Klasse von Fehlern ab, die beim Bauen mit KI am häufigsten passieren. Es deckt nichts ab, was auf deinem Server passiert.","Ein sauberes Ergebnis heißt, dass jede Frage, die der Scan von außen stellen konnte, sauber zurückkam. Nimm es als eine Sorge weniger.","QR0bZaidmGdjvg_XAyXWruJDAU6kpqWMi7cm1qargz4",[414,421,427,433,439,445,451,457,463,469,475,481,487,493,499,505,511,517,523,524,529,535,541,547,553,559,565,571,577,583,589,595,601,607,613,619,624,630,636,641,646,652],{"path":415,"title":416,"description":417,"published":418,"category":419,"image":420,"draft":369},"\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":422,"title":423,"description":424,"published":425,"category":365,"image":426,"draft":369},"\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":428,"title":429,"description":430,"published":431,"category":365,"image":432,"draft":369},"\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":434,"title":435,"description":436,"published":437,"category":365,"image":438,"draft":369},"\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":440,"title":441,"description":442,"published":443,"category":365,"image":444,"draft":369},"\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":446,"title":447,"description":448,"published":449,"category":365,"image":450,"draft":369},"\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":452,"title":453,"description":454,"published":455,"category":365,"image":456,"draft":369},"\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":458,"title":459,"description":460,"published":461,"category":365,"image":462,"draft":369},"\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":464,"title":465,"description":466,"published":467,"category":365,"image":468,"draft":369},"\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":470,"title":471,"description":472,"published":473,"category":419,"image":474,"draft":369},"\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":476,"title":477,"description":478,"published":479,"category":419,"image":480,"draft":369},"\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":482,"title":483,"description":484,"published":485,"category":419,"image":486,"draft":369},"\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":488,"title":489,"description":490,"published":491,"category":365,"image":492,"draft":369},"\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":494,"title":495,"description":496,"published":497,"category":365,"image":498,"draft":369},"\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":500,"title":501,"description":502,"published":503,"category":365,"image":504,"draft":369},"\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":506,"title":507,"description":508,"published":509,"category":365,"image":510,"draft":369},"\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":512,"title":513,"description":514,"published":515,"category":365,"image":516,"draft":369},"\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":518,"title":519,"description":520,"published":521,"category":365,"image":522,"draft":369},"\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":404,"title":5,"description":368,"published":405,"category":365,"image":389,"draft":369},{"path":206,"title":525,"description":526,"published":527,"category":365,"image":528,"draft":369},"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":530,"title":531,"description":532,"published":533,"category":365,"image":534,"draft":369},"\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":536,"title":537,"description":538,"published":539,"category":365,"image":540,"draft":369},"\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":542,"title":543,"description":544,"published":545,"category":419,"image":546,"draft":369},"\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":548,"title":549,"description":550,"published":551,"category":365,"image":552,"draft":369},"\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":554,"title":555,"description":556,"published":557,"category":419,"image":558,"draft":369},"\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":560,"title":561,"description":562,"published":563,"category":365,"image":564,"draft":369},"\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":566,"title":567,"description":568,"published":569,"category":365,"image":570,"draft":369},"\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":572,"title":573,"description":574,"published":575,"category":365,"image":576,"draft":369},"\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":578,"title":579,"description":580,"published":581,"category":365,"image":582,"draft":369},"\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":584,"title":585,"description":586,"published":587,"category":419,"image":588,"draft":369},"\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":590,"title":591,"description":592,"published":593,"category":419,"image":594,"draft":369},"\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":596,"title":597,"description":598,"published":599,"category":365,"image":600,"draft":369},"\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":602,"title":603,"description":604,"published":605,"category":365,"image":606,"draft":369},"\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":608,"title":609,"description":610,"published":611,"category":419,"image":612,"draft":369},"\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":614,"title":615,"description":616,"published":617,"category":365,"image":618,"draft":369},"\u002Fblog\u002Fcan-anyone-read-your-supabase-database","Kann jeder deine Supabase-Datenbank lesen? 3.680 Apps im Test","Kann jeder deine Supabase-Datenbank ohne Login lesen? Wir haben 30.998 aktive Apps aus KI-Buildern gescannt und gemessen, wie oft die Antwort ja lautet.","2026-08-18","\u002Fblog\u002Fcan-anyone-read-your-supabase-database\u002Fcard-800x500.png",{"path":620,"title":621,"description":622,"published":617,"category":365,"image":623,"draft":369},"\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":625,"title":626,"description":627,"published":628,"category":365,"image":629,"draft":369},"\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":631,"title":632,"description":633,"published":634,"category":419,"image":635,"draft":369},"\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":283,"title":637,"description":638,"published":639,"category":365,"image":640,"draft":369},"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":642,"title":643,"description":644,"published":639,"category":419,"image":645,"draft":369},"\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":647,"title":648,"description":649,"published":650,"category":419,"image":651,"draft":369},"\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":141,"title":653,"description":654,"published":650,"category":365,"image":655,"draft":369},"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]