Zum Inhalt springen

Prüfregel · RSC-SEC-035

Browser schreibt direkt in die Datenbank

SicherheitSchweregrad: MittelCWE-602OWASP A04-2021

Findet Schreibaufrufe (`insert`, `update`, `upsert`, `delete`, Storage-Upload) im ausgelieferten Code bzw. in `use client`-Dateien.

Warum das zählt

Das ist das häufigste Muster bei KI-gebauten Apps überhaupt: Die Komponente ruft `supabase.from("tabelle").insert(...)`, der Browser spricht direkt mit der Datenbank. Im eigenen Vibe-Code-Audit war das bei 5 von 12 generierten Features so.

Es ist keine Lücke an sich — Supabase ist dafür gebaut. Es verschiebt aber die gesamte Zugriffskontrolle in die Datenbank: Ab hier entscheidet nur noch Row Level Security, WER schreiben darf, und niemand prüft, WAS geschrieben wird. Kein Schema-Check, kein Rate-Limit, kein Spam-Schutz — ein Kontaktformular ohne Server ist damit auch ein offener Schreibkanal.

Prüfen: Existiert für jede genannte Tabelle eine Policy, die genau diese Operation an `auth.uid()` bindet? Läuft ein Löschvorgang aus dem Browser, gilt das doppelt. Alles, was validiert oder begrenzt werden muss (Formulare, Zahlungen, Einladungen), gehört hinter einen eigenen Endpunkt.

Prüfstufe

Außen-Scan (anonym)Quellcode aus Source MapsRepo-Zugang (Deep-Scan)

So behebt ihr es

Schreibpfade über einen Server-Endpunkt mit Validierung und Rate-Limit führen; RLS-Policy je Tabelle und Operation nutzerbezogen prüfen.

Eigene App kostenlos prüfen