Zum Hauptinhalt springen

Sicherheit

Zero-Knowledge-Verschlüsselung​

Plandaten werden auf dem Client verschlüsselt (AES-GCM). Der Verschlüsselungsschlüssel wird aus dem Passwort des Nutzers abgeleitet (PBKDF2), und in einem Duo-Plan wird er zwischen den Haushaltsmitgliedern per Schlüsselaustausch (ECDH) geteilt. Der Schlüssel erreicht den Server in keiner Form. Wir schreiben keine eigene Kryptografie — wir nutzen die native Web Crypto API des Browsers.

Das Ergebnis: Selbst mit vollem Zugriff auf die Datenbank lassen sich die Daten ohne das Passwort oder den Wiederherstellungscode des Nutzers nicht lesen.

Zugriffskontrolle (Row Level Security)​

Im Cloud-Modus wird der Datenzugriff durch Postgres RLS erzwungen: Abfragen sehen und ändern nur den Haushalt, dessen Mitglied Sie sind. Operationen wie das Erstellen/Beitreten/Verlassen eines Haushalts oder das Speichern des Zustands laufen über security definer-Funktionen, die die Berechtigungen kontrolliert prüfen. RLS wirkt als zusätzliche Schicht (Defense-in-Depth) über dem Chiffretext — sie schränkt ein, wer einen Datensatz überhaupt abrufen kann, der ohne den Schlüssel ohnehin unlesbar ist.

Schlüssel und Geheimnisse​

  • Im Browser wird nur der öffentliche anon-Schlüssel verwendet, geschützt durch RLS.
  • Sensible Schlüssel (z. B. Service-Role-, Zahlungsanbieter-Schlüssel) erreichen das Frontend nie — sie liegen nur auf dem Server (Umgebungsvariablen).
  • Keine Geheimnisse im Repository.

Datenvalidierung​

Jedes Formular und jedes Lesen des Zustands durchläuft Zod-Schemas — ungültige oder böswillige Daten erreichen die App nie. Text wird von Steuerzeichen bereinigt.

Passwörter​

Passwörter werden nicht im Klartext gespeichert — Supabase hält nur einen Einweg-Hash (bcrypt). Sie lassen sich nicht lesen; sie lassen sich nur zurücksetzen oder überschreiben.

Destruktive Aktionen​

Das Zurücksetzen von Daten und das Löschen Ihres Kontos erfordern eine Passwortbestätigung, um versehentlichen Datenverlust zu verhindern.

Transport und Header​

Kommunikation über HTTPS, mit Sicherheits-Headern (einschließlich einer CSP).