Nutzer können die Daten der anderen sehen
Jemand hat sich angemeldet und eine Liste gesehen, die nicht seine war — fremde Bestellungen, fremde Nachrichten. Oder es ist noch nicht passiert und dir ist gerade erst eingefallen, dass es passieren könnte, was der bessere Moment ist, das hier zu lesen.
Warum es schwer zu sehen ist
Das ist der schwerwiegendste Defekt, den diese Anwendungen haben, und der leiseste. Eine fehlende Row-Level-Security-Regel wirft keinen Fehler, macht nichts langsamer und erzeugt kein Supportticket von der Person, deren Daten offengelegt wurden — die Seite funktioniert, für alle, und zeigt alles.
Man kommt auch auf ehrlichem Weg dorthin. Row-Level Security ist standardmäßig aus, bis du eine Regel schreibst; eine später hinzugefügte Tabelle erbt keine; und eine Abfrage, die gegen dein eigenes Konto geschrieben wurde, sieht richtig aus, solange du der einzige Nutzer bist.
Was Sixty dagegen tut
Jede Abfrage wird auf eine bestimmte Form geprüft: eine Tabelle, die die Daten einer einzelnen Person hält, nirgends im Statement eine eingrenzende Bedingung — kein user_id, org_id, tenant_id oder auth.uid() — und mehr zurückkommende Zeilen, als eine Einzelabfrage erklären würde. Alle drei müssen zutreffen, bevor es etwas sagt.
Wenn sie zutreffen, benennt der Befund die Abfrage und die Operation und bittet dich um Bestätigung, statt ein Leck zu erklären. Eine Regel, die innerhalb der Datenbank greift, ist im Statement deiner Anwendung nicht sichtbar — was hier gefunden wird, ist also eine Abfrage, die unsicher wäre, wenn RLS fehlte. Genau die Abfrage, die man prüft, wenn RLS das am ehesten Fehlende ist.
Was es nicht tut
Es kann deine Regeln nicht sehen, nur deine Statements, also kann es sich in die sichere Richtung irren: eine Abfrage, die von einer Regel ordentlich geschützt ist, kann trotzdem gemeldet werden. Es wird dir auch nicht sagen, wessen Daten offengelegt wurden — über deine Nutzer wird nichts erhoben, und das ist derselbe Grund, warum die Installation deinem Cookie-Banner nichts hinzufügt.
OpenTelemetry
OpenTelemetry bereits vorhanden?
Behalte Collector und Exporter. Sixty kann verbundene Traces und nützliche Runtime-Metriken aufnehmen und Release-Regressionen ableiten; native Agents liefern, wo verfügbar, tiefere Funktions- und Treiberdetails.