Prüfregel · RSC-SEC-070
Angemeldete Fremde lesen fremde Datensätze
Legt nach Domain-Nachweis ein Wegwerf-Konto an und zählt, wie viele Zeilen dieses fremde Konto in personenbezogenen Tabellen sieht — ohne eine einzige Zeile abzurufen.
Warum das zählt
Es gibt zwei völlig verschiedene Fragen, und KI-generierte Zugriffsregeln beantworten regelmäßig die falsche. Die erste lautet: Ist der Aufrufer angemeldet? Die zweite: Gehört ihm dieser Datensatz? Eine Policy mit `auth.role() = 'authenticated'` beantwortet nur die erste — und gibt damit jedem, der sich registrieren kann, die Daten aller anderen.
Von außen ist das unsichtbar, und genau deshalb überlebt der Fehler so lange. Anonym antwortet die Tabelle mit null Zeilen; jeder reine Außen-Scan meldet sie als sauber. Erst ein echtes Konto zeigt den Unterschied — und ein Konto, das gerade erst entstanden ist, besitzt keine eigenen Daten. Sieht es trotzdem Zeilen, gehören sie zwangsläufig anderen. Das ist kein Indiz, sondern ein Beweis.
So prüft ihr es selbst: Legt euch ein zweites Konto an, meldet euch damit an und ruft eine Liste auf, die eigentlich nur eure eigenen Daten zeigen sollte. Seht ihr dort Einträge des ersten Kontos, ist die Trennung offen. In SQL erkennt ihr es an jeder Policy, deren `using`-Ausdruck den Nutzer nicht nennt.
Prüfstufe
So behebt ihr es
Policies auf `auth.uid() = user_id` umstellen statt auf `auth.role() = 'authenticated'`, dann erneut prüfen.