Prüfregel · RSC-SEC-098
Datenbank steht offen (Verbund)
Fasst zusammen, was einzeln erklärbar wäre: Zugangsschlüssel im ausgelieferten Code, fehlende oder durchlässige Row Level Security und — für die kritische Stufe — Schreibzugriffe direkt aus dem Browser.
Warum das zählt
Der anon-Key im Bundle ist bei Supabase vorgesehen, eine Migration ohne RLS ist ein Hinweis, ein Insert aus dem Browser ist ein Architekturmuster. Jedes davon steht für sich als „sollte man sich ansehen“. Zusammen bedeuten sie etwas anderes: Jeder Besucher kann mit dem öffentlichen Schlüssel lesen und schreiben, was die Anwendung speichert — ohne Login, ohne Spur.
Genau diese Kombination entsteht in KI-gebauten Apps regelmäßig, weil der Generator die Datenbank so anlegt, dass der Prototyp sofort funktioniert. Er funktioniert deshalb, weil nichts prüft. Der Befund nennt seine drei Bestandteile mit Nachweis, damit nachvollziehbar ist, worauf die Aussage steht.
Der Weg heraus ist kein Umbau: RLS je Tabelle einschalten, Policies an `auth.uid()` binden, Schreibpfade prüfen. Danach mit dem öffentlichen Schlüssel ohne Anmeldung gegen jede Tabelle testen — kommt nichts zurück, ist die Tür zu.
Prüfstufe
So behebt ihr es
Row Level Security auf jeder betroffenen Tabelle aktivieren, nutzerbezogene Policies je Operation setzen und Schreibpfade aus dem Browser hinter eine serverseitige Prüfung legen.