Sicherheitsprüfung für Lovable- und Supabase-Apps
Kurz gesagt
Eine Lovable-App greift direkt aus dem Browser auf Supabase zu. Ihre Sicherheit hängt deshalb fast vollständig an Row Level Security in Postgres, am richtigen Umgang mit Schlüsseln und an sauber konfigurierten Login-Abläufen, Storage-Buckets und Edge Functions. Eine Prüfung stellt sicher, dass niemand über direkte API-Aufrufe fremde Daten lesen oder verändern kann.
Das Grundproblem: Die Oberfläche schützt nichts
Bei klassischen Webanwendungen sitzt ein eigenes Backend zwischen Nutzer und Datenbank. Bei den meisten Lovable-Projekten nicht: Das React-Frontend spricht mit dem Supabase-Client und einem öffentlichen Schlüssel direkt die Datenbank-API an. Das ist ein legitimes Architekturmuster – aber jede Regel, die nur in der Oberfläche umgesetzt ist, lässt sich mit den Entwicklertools des Browsers oder einem einfachen HTTP-Aufruf umgehen. Ein ausgeblendeter Admin-Button ist keine Zugriffskontrolle.
Die fünf Prüfbereiche
| Bereich | Typischer Fehler | Richtiger Zustand |
|---|---|---|
| Row Level Security | RLS fehlt oder Policy mit using (true) | RLS auf jeder Tabelle, Policies je Nutzer oder Rolle |
| Schlüssel | Service-Role- bzw. Secret-Key im Frontend | nur Anon- bzw. Publishable-Key im Browser |
| Login | beliebige Weiterleitungs-URLs, offene Registrierung | Allowlist für Redirects, bewusst gewählte Registrierung |
| Storage | sensible Dateien in öffentlichen Buckets | private Buckets mit Policies je Nutzerordner |
| Edge Functions | nur Token geprüft, nicht der Nutzer | Nutzer ermitteln, Berechtigung prüfen, Eingaben validieren |
Row Level Security im Detail
Hier liegen die meisten und folgenreichsten Fehler. Prüfen Sie insbesondere:
- ob RLS auf allen Tabellen im Schema
publicaktiv ist – auch auf solchen, die per SQL-Migration nachträglich entstanden sind, - ob Update- und Insert-Policies eine
with check-Bedingung haben, - ob Nutzer ihre eigene Rolle ändern können, etwa über eine Spalte
is_adminim eigenen Profil, - ob Views mit
security_invoker = trueangelegt sind, da sie sonst mit den Rechten des Eigentümers laufen und RLS umgehen, - welche Funktionen mit
security definerlaufen und was sie preisgeben.
Der Security Advisor im Supabase-Dashboard weist auf Tabellen ohne RLS und weitere typische Schwachstellen hin. Er ist ein guter Anfang, ersetzt aber nicht die fachliche Frage, wer welche Zeilen sehen darf. Grundlagen erklärt die Supabase-Dokumentation zu Row Level Security.
Schlüssel, Edge Functions und Dateien
Der Anon- oder Publishable-Key darf öffentlich sein, er landet zwangsläufig im JavaScript-Bundle. Der Service-Role- oder Secret-Key umgeht RLS vollständig. Durchsuchen Sie deshalb das gebaute Bundle und die gesamte Git-Historie, nicht nur den aktuellen Code. Schlüssel von Zahlungsanbietern oder KI-Diensten gehören ausschließlich in Edge Functions.
Bei Edge Functions gilt: Die standardmäßige JWT-Prüfung bestätigt nur, dass ein gültiges Token mitgeschickt wurde – und der öffentliche Anon-Key ist selbst ein gültiges Token. Ermitteln Sie in der Funktion den tatsächlichen Nutzer und prüfen Sie dessen Rechte. Dateien wie Rechnungen, Ausweise oder Nutzer-Uploads gehören in private Buckets mit Policies auf storage.objects.
Damit es sicher bleibt
Eine einmalige Prüfung veraltet mit dem nächsten Prompt. Jede neue Tabelle, die Lovable anlegt, braucht wieder passende Policies. Bewährt haben sich:
- Datenbankänderungen ausschließlich als Migrationen im Git-Repository,
- automatisierte Tests für Policies, etwa mit pgTAP, die bei jeder Änderung laufen,
- eine kurze Checkliste für jede neue Tabelle und jeden neuen Bucket.
Datenschutz nicht vergessen
Für Anwendungen mit Nutzern in der EU lohnt ein Blick auf die Region des Supabase-Projekts, den Auftragsverarbeitungsvertrag und die Frage, welche Daten überhaupt gespeichert werden müssen. Wird eine Datenpanne bekannt, sieht die DSGVO in der Regel eine Meldung an die Aufsichtsbehörde binnen 72 Stunden vor. Eine saubere RLS-Konfiguration ist deshalb nicht nur Technik, sondern Risikovorsorge. Dies ersetzt keine Rechtsberatung.
So unterstützt jocapps
OnlineAppCreator ist unser ISO-zertifiziertes B2B- und B2G-Delivery-Team in Deutschland. Es prüft und härtet KI-gebaute Prototypen für den Produktivbetrieb: RLS-Policies, Schlüsselverwaltung, Login, Storage und Edge Functions, auf Wunsch mit langfristiger Betreuung per SLA. Ergänzend liefert UXreviewer.io innerhalb von 10 Werktagen einen UX-Report mit kommentierten Screenshots, Mockups und konkreten Verbesserungsideen – hilfreich, damit strengere Registrierungs- und Rechteabläufe für Nutzer verständlich bleiben. Mehr zum Leistungsbereich Prototyp zu Produktion oder im kostenlosen 30-minütigen Erstgespräch über den Terminplaner.
Häufige Fragen
Ist es gefährlich, dass der Supabase-Schlüssel im Browser sichtbar ist?
Der Anon- bzw. Publishable-Key ist dafür vorgesehen. Gefährlich wird es erst, wenn Row Level Security fehlt oder zu großzügig ist.
Wie teste ich selbst, ob Daten offen liegen?
Rufen Sie mit dem öffentlichen Schlüssel ohne Anmeldung die REST-Endpunkte Ihrer Tabellen auf und versuchen Sie anschließend als Testnutzer, Daten eines zweiten Testnutzers zu lesen oder zu ändern. Alles, was dabei zurückkommt und nicht zurückkommen sollte, ist ein Befund.
Reicht die Prüfung durch Lovable oder den Supabase Security Advisor?
Sie finden typische Konfigurationsfehler, kennen aber Ihre fachlichen Regeln nicht. Wer welche Daten sehen darf, muss ein Mensch prüfen.
Guides zum Thema
Verwandte Lösungen
- Produktionsreife und AuditsPerformance-Analyse für Web-Apps und mobile Apps
- Produktionsreife und AuditsBarrierefreiheit prüfen: Audit für Web und Apps nach BFSG
- Produktionsreife und AuditsBolt.new-App produktionsreif machen
- Produktionsreife und AuditsReplit-App vom Prototyp in den Produktivbetrieb bringen
Sprechen wir über Ihr Projekt
Ehrliche Einschätzung zu Idee, Prototyp oder App.
- 30 Minuten
- Kostenlos
- Unverbindlich
