Sicherheit

So schützt QuoteBill Konten und Dokumente: Row-Level-Security, Schlüssel und Links nur als Hash, protokollierter Admin-Zugriff und die Prüfkette der E-Verträge.

Worum es auf dieser Seite geht

Diese Seite beschreibt, was der Code und die Datenbank von QuoteBill tatsächlich tun, um Konten und Dokumente zu schützen. Sie beschreibt Maßnahmen, keine Garantien: Kein Dienst ist frei von Fehlern, und diese Seite ist weder eine Zertifizierung noch ein Prüfbericht. Was jede Funktion speichert und wie lange, steht in der Datenschutzerklärung; die Vertrauensdetails der E-Verträge haben eine eigene Seite.

Wer Ihre Daten lesen kann

Ihre gespeicherten Dokumente und Firmeneinstellungen sind in der Datenbank durch Row-Level-Security geschützt: Aus einem Browser kann nur die angemeldete Inhaberin oder der angemeldete Inhaber sie lesen oder ändern.

Ein Anmelde-Token, das einer KI-App ausgestellt wurde, wird auf diesen Tabellen durch eine einschränkende Regel abgelehnt. Eine verbundene KI-App kann daher Ihre gespeicherten Dokumente, Verträge und Dateien nicht öffnen. Der MCP-Server von QuoteBill selbst nutzt nur öffentliche Informationen und Berechnungen; er liest keine Mitgliederdaten.

Tabellen, die nur unsere Server nutzen, etwa Besuchsdaten, Tagessummen und Zähler für Anfragegrenzen, sind für Browser und KI-Apps gesperrt: Row-Level-Security ist eingeschaltet, und keine Richtlinie und keine Berechtigung erlaubt ihnen das Lesen.

Die Daten der E-Verträge liegen in einem privaten Datenbankschema, das Browser nicht abfragen können. Sie sind nur über eine feste Menge von Datenbankfunktionen erreichbar, die prüfen, wer fragt. Ein Vertrag wird über seine ID und seine Inhaberin oder seinen Inhaber gesucht; der Vertrag eines anderen Mitglieds antwortet daher genau wie ein Vertrag, den es nicht gibt.

Manche Daten sind von vornherein öffentlich: Beiträge in der Community und veröffentlichte Artikel. Firmenlogos, Stempel und Unterschriftenbilder liegen dort, wo jeder sie öffnen kann, der ihre Adresse kennt; laden Sie daher keine vertraulichen Bilder hoch.

Passwörter und Anmeldung

Ihr Passwort geht aus Ihrem Browser direkt an Supabase Auth, unseren Anmeldedienst; der Code von QuoteBill speichert es nie. Wie Supabase Auth es schützt, beschreibt Supabase. Melden Sie sich mit Google an, teilt Google Supabase Auth mit, wer Sie sind. QuoteBill merkt sich in Ihrem Browser nur, wie Sie sich angemeldet haben, und Ihre E-Mail-Adresse, damit die nächste Anmeldung schneller geht.

E-Verträge: Links, Codes und Sitzungen

Ein Signaturlink enthält ein Geheimnis aus 32 Zufallsbytes. QuoteBill speichert nur dessen SHA-256-Hash, und der Absender sieht den Link einmal, wenn er erzeugt wird. Das Geheimnis steht hinter dem Zeichen # der Adresse, sodass es nicht in den Anfragezeilen unserer Server-Protokolle landet, und die Seite entfernt es nach dem Lesen aus der Adressleiste. Ein neuer Link für eine unterzeichnende Person beendet den alten sofort.

Ein Zugangscode hat 8 Zeichen aus einem Alphabet von 32 Symbolen und wird nur als gesalzener bcrypt-Hash gespeichert. Falsche Codes sperren den Link für 15 Minuten nach dem fünften und nach dem zehnten Fehlversuch, nach dem fünfzehnten wird der Link widerrufen.

Die Sitzung einer unterzeichnenden Person ist ein zufälliges Geheimnis, von dem nur der SHA-256-Hash gespeichert wird. Sie dauert 30 Minuten ab der letzten Aktion, höchstens 2 Stunden.

Jede Aktion hat eine Grenze je Netzwerkadresse und je unterzeichnender Person, gezählt mit einem gesalzenen Hash der Adresse. Eine Bereinigung alle zehn Minuten löscht Zähler, die älter als zwei Stunden sind.

Sobald ein Vertrag beendet ist (abgeschlossen, abgelehnt, für ungültig erklärt oder abgelaufen), funktioniert sein Link nicht mehr, und die gespeicherten Hashes von Link, Code und Sitzung werden spätestens nach 30 Tagen gelöscht.

E-Verträge: die Prüfkette

Jede Aktion an einem Vertrag (gesendet, geöffnet, zugestimmt, unterzeichnet, abgelehnt, erinnert und so weiter) wird als Ereignis festgehalten. Der SHA-256-Hash eines Ereignisses umfasst dessen eigenen Inhalt (den Vertrag, die laufende Nummer, die Art des Ereignisses, den Handelnden, die Zeit der Datenbankuhr, die Netzwerkadresse sowie Hashes von Browser und Einzelheiten) und den Hash des vorherigen Ereignisses. Das erste Ereignis ist an das Aktenzeichen des Vertrags gekettet. Der Hash des letzten Ereignisses, des Abschlusses, ist der Zertifikats-Hash, der auf dem Zertifikat steht und auf der Prüfseite angezeigt wird.

Der unterzeichnete Text ist eingefroren und an einen Fingerabdruck gebunden, den SHA-256-Hash seiner kanonischen Form, den die Datenbank neu berechnet. Trigger in der Datenbank verweigern das Ändern, Löschen und Leeren von Ereignissen, Unterschriften und dem Prüfeintrag.

Sie können eine Nachweisdatei auf der Prüfseite kontrollieren: Ihr Browser geht die Kette und die Unterschriften selbst durch und sendet QuoteBill nur das Aktenzeichen und den Fingerabdruck des Vertrags.

Das zeigt: Die Nachweisdatei ist in sich stimmig und passt zu dem Eintrag, den QuoteBill führt. Es zeigt nicht, wer unterzeichnet hat, denn QuoteBill prüft keine Identitäten. Kein geheimer Schlüssel signiert die Kette, und kein externer Zeitstempeldienst stempelt sie; die Zeiten stammen von der Datenbankuhr von QuoteBill. Wer Administratorzugriff auf die Datenbank hat, könnte grundsätzlich die Trigger abschalten, Einträge ändern und die Hashes neu berechnen; die Kopien der Parteien würden dann nicht mehr passen. Deshalb sollte jede Partei ihre eigene unterzeichnete Kopie aufbewahren.

Was Administratoren sehen können

Administratorseiten brauchen ein Administratorkonto. Bei jedem Aufruf prüft die Datenbank die Rolle und ob Ihre Anmeldesitzung noch besteht, und sie lehnt Token ab, die KI-Apps ausgestellt wurden.

Administratoren können die Dokumente öffnen, die Mitglieder in der Cloud gespeichert haben, um Support zu leisten, Missbrauch zu untersuchen oder eine rechtliche Pflicht zu erfüllen. Das Öffnen ist nur lesend, und jedes Öffnen wird in einem Protokoll festgehalten (welche Administratorin oder welcher Administrator, welches Dokument, wann), das durch Trigger vor Änderungen geschützt ist. Die Liste, die zu einem Dokument führt, zeigt E-Mail-Adresse und Namen der Inhaberin oder des Inhabers sowie Name, Nummer, Kunde, Status und Summe des Dokuments; protokolliert wird nur das Öffnen eines Dokuments.

Diese Ansicht öffnet keine E-Verträge. Bei gemeldeten Verträgen sehen Administratoren Titel, Aktenzeichen, Status, Zahl der Meldungen, den letzten Grund und die E-Mail-Adresse der Inhaberin oder des Inhabers, nicht den Vertragstext und nicht die Unterschriften, und sie können einen gesendeten Vertrag aussetzen.

Die Rolle eines Mitglieds oder sein Dokumentlimit zu ändern, erfordert eine schriftliche Begründung und wird in einem nicht änderbaren Protokoll festgehalten; Rollen ändert nur ein Superadministrator. Eine Funktion, sich als Mitglied anzumelden, gibt es bei QuoteBill nicht.

Die Personen, die die Datenbank betreiben, können technisch auf alles zugreifen, was darin gespeichert ist. Die genannten Maßnahmen steuern und protokollieren die Nutzung der Administratorseiten von QuoteBill, nicht diesen technischen Zugriff.

API-Schlüssel und KI-Apps

Ein API-Schlüssel hat die Form qbk_ gefolgt von 32 Zufallszeichen. QuoteBill speichert seinen SHA-256-Hash zusammen mit den ersten acht Zeichen (damit Sie Ihre Schlüssel unterscheiden können), seinem Namen, seinen Berechtigungen und seinen Daten; der Schlüssel selbst wird nur einmal angezeigt, wenn Sie ihn erzeugen. Sie können fünf aktive Schlüssel gleichzeitig haben, jeder läuft nach 30, 90 oder 365 Tagen ab, wie Sie es wählen, und Sie können einen jederzeit widerrufen.

Ein Schlüssel kann Dokumententwürfe erstellen und Ihre gespeicherten Dokumente in verkürzter Form lesen (Kundendaten, Positionen, Hinweise und Summen). Er kann nichts bearbeiten, löschen, senden oder unterzeichnen, keine Einstellungen oder Schlüssel ändern und nicht auf E-Verträge zugreifen. Jeder Schlüssel ist auf 60 Anfragen pro Minute und 5.000 pro Tag begrenzt, und das Protokoll der API behält nur Methode, Pfad und Ergebnis, nie den Inhalt.

Eine KI-App wie ChatGPT, Claude oder Gemini meldet sich mit Ihrer Erlaubnis an und erhält ein gewöhnliches Anmelde-Token für Ihr Konto, ausgestellt von Supabase Auth. Damit kann die App die E-Mail-Adresse, den Namen und das Foto Ihres Kontos lesen, wie Supabase Auth sie zurückgibt. Der MCP-Server fragt Supabase Auth, ob das Token gültig ist, merkt sich die Antwort bis zu einer Minute und gibt das Token nicht weiter. Seine Werkzeuge nutzen nur öffentliche Informationen und Berechnungen. Die Datenbank lehnt es ab, dass ein einer KI-App ausgestelltes Token auf Ihre gespeicherten Dokumente, Verträge, Dateien und Administratorfunktionen zugreift oder API-Schlüssel erzeugt.

Für Anfragegrenzen speichert der MCP-Server einen gesalzenen Einweg-Hash, der sich jede Minute ändert; sein Protokoll enthält das aufgerufene Werkzeug, ob es geantwortet hat, und den Namen der App, nie die Anfrage.

Was gehasht wird und was QuoteBill nicht verschlüsselt

Der Code von QuoteBill verschlüsselt gespeicherte Daten nicht selbst. Die Website wird über HTTPS ausgeliefert und sendet einen Strict-Transport-Security-Header für ein Jahr; die Verschlüsselung der Verbindung und der gespeicherten Daten leisten unsere Hosting- und Datenbankanbieter, und diese Seite behauptet dazu nicht mehr als das.

  • Signaturlinks, Sitzungen unterzeichnender Personen und API-Schlüssel: nur als SHA-256-Hashes gespeichert.
  • Zugangscodes: nur als gesalzene bcrypt-Hashes gespeichert.
  • Besuchercodes: ein Hash mit Schlüssel (HMAC-SHA-256) aus Ihrer Netzwerkadresse und den Browserangaben, mit einem Schlüssel, der sich täglich ändert; die Adresse selbst wird nicht gespeichert.
  • Zähler für Anfragegrenzen: gesalzene Hashes von Netzwerkadressen.
  • Einladungseinträge: ein SHA-256-Hash der eingegebenen E-Mail-Adresse.
  • Passwörter: werden von Supabase Auth verarbeitet.

Schutz im Browser

Seiten werden mit X-Content-Type-Options: nosniff und einer strengen Referrer-Richtlinie gesendet. Andere Websites können sie nicht in einem Frame anzeigen (X-Frame-Options: DENY und eine frame-ancestors-none-Regel), außer den Vorlagen- und Werkzeug-Einbettungen, die dafür gebaut sind.

Die Seiten für Verträge, Unterzeichnung und Prüfung tragen eine strenge Content Security Policy: Skripte nur von QuoteBill selbst, keine Frames, und Verbindungen nur zu QuoteBill und dessen Datenbankanbieter. Sie enthalten keine Werbung, keine Analyse und keine Besuchszählung, werden von Suchmaschinen nicht indexiert und nicht zwischengespeichert.

Ihr Konto löschen

Sie können Ihr Konto in den Einstellungen löschen. QuoteBill entfernt die Bilder, die Sie hochgeladen haben, und Ihr Konto; die damit verbundenen Dokumente, Verträge, API-Schlüssel, Likes und Einladungscodes werden mitgelöscht. Was bleibt, steht im Datenschutzhinweis: der Prüfeintrag abgeschlossener Verträge, der minimale Eintrag zu einem gelöschten gesendeten Vertrag (befristet aufbewahrt) und der Einladungseintrag.

Sicherheitslücke melden

Wenn Sie eine Schwachstelle finden, schreiben Sie bitte an auto0104@gmail.com mit der Seite, den Schritten zum Nachstellen und dem, was Sie gesehen haben. Bitte schicken Sie keine Daten anderer Personen, und geben Sie uns Zeit zur Behebung, bevor Sie darüber berichten. Dieselbe Adresse steht in unserer Datei security.txt (unter /.well-known/security.txt).

Diese Seite verspricht keine Belohnung.

Änderungen

Zuletzt geändert: 2026-10-06.

  • 2026-10-06: Erste Fassung dieser Seite.

auto0104@gmail.com