Row Level Security (RLS)
Row Level Security (RLS) ist die Zugriffskontrolle direkt in der Postgres-Datenbank: Regeln (Policies) entscheiden pro Datenzeile, wer sie lesen oder ändern darf — zum Beispiel „nur der Besitzer“. Ohne aktivierte RLS ist bei Supabase jede Tabelle, die das Frontend erreicht, offen für jeden. RLS ist die eigentliche Sicherheitsschicht einer Supabase-App, nicht der Login-Bildschirm davor.
Der entscheidende Denkfehler in vielen KI-gebauten Apps: Der Login sieht sicher aus, also fühlt sich die App sicher an. Aber der Login regelt nur, wer die Oberfläche sieht. Die Datenbank spricht direkt mit dem Frontend — und wenn RLS nicht aktiv ist, kann jeder mit dem öffentlichen Anon-Key alle Zeilen aller Nutzer abfragen, komplett am Login vorbei.
Zwei Fehlerbilder sind typisch. Erstens: RLS ist auf einer Tabelle gar nicht eingeschaltet — dann gilt gar keine Beschränkung. Zweitens: RLS ist an, aber die Policy lautet „using (true)“ — das erlaubt formal jedem alles und ist damit genauso offen, nur schwerer zu erkennen. Beide sehen in der App identisch aus: Es funktioniert. Sicher ist es nicht.
Richtig gemacht heißt: RLS auf jeder Tabelle aktiviert, und jede Policy an die Identität des Nutzers gebunden (typisch „auth.uid() = user_id“). Unser Rescue-Deep-Scan prüft genau beides — fehlende RLS und zu großzügige „using (true)“-Policies — und macht sichtbar, ob hinter dem Login-Bildschirm wirklich jemand die Tür abgeschlossen hat.