Analytics House

Sicherheitsarchitektur

Analytics House läuft in isolierten V8-Sandboxes von Cloudflare Workers, gestützt auf parametrisierte SQLite-Abfragen in Cloudflare D1, strikte Mandantentrennung und automatisierte End-to-End-Sicherheitsprüfungen.

1. Authentifizierung & Absicherung von Zugangsdaten

  • Passwort-Hashing: Passwörter werden mit WebCrypto PBKDF2-SHA256 mit 100.000 Iterationen und einem eigenen zufälligen 128-Bit-Salt pro Nutzer gehasht. Die Prüfung verwendet einen Bytevergleich in konstanter Zeit, um Timing-Seitenkanäle zu verhindern.
  • Sitzungs- & Reset-Tokens: Sitzungen verwenden signierte HS256-JWTs mit 7 Tagen Gültigkeit. Links zum Zurücksetzen des Passworts verwenden einmalig gültige Zufallstokens, die nur als SHA-256-Digests gespeichert werden und nach 1 Stunde ablaufen.
  • Rate-Limiting am Edge: Anmeldeversuche, Registrierungen, Passwort-Resets, Ereigniserfassung (pro Projekt und pro IP/Relay), Testversand von Berichten und API-Endpunkte sind durch Rate-Limiter mit gleitendem Zeitfenster geschützt, die 429 Too Many Requests mit Retry-After-Header zurückgeben.

2. Mandantentrennung & rollenbasierte Zugriffskontrolle (RBAC)

  • Strikte Mandantenbindung: Jede SQL-Abfrage bindet project_id und prüft vor der Ausführung die Projektmitgliedschaft. Nicht autorisierte Anfragen erhalten 404 Not Found, sodass sich Projekt-IDs nicht durch Ausprobieren ermitteln lassen.
  • Rollen Inhaber, Administrator & Betrachter: Betrachter haben nur Lesezugriff auf aggregierte Dashboards; Exporte von Rohereignissen sind gesperrt (403), und in Rohereignis-Feeds werden user_id, session_id, visitor_id und city für Betrachter automatisch unkenntlich gemacht.
  • Eingeschränkte, schreibgeschützte Statistik-API-Schlüssel (ea_sk_...): In D1 werden nur der SHA-256-Hash und ein 12-stelliges Präfix gespeichert. Statistikschlüssel können nie Rohereignisse lesen, Einstellungen verwalten oder den API-Schlüssel für die Datenerfassung offenlegen.

3. Lieferketten- & Webhook-Sicherheit

  • Subresource Integrity (SRI): Der Bereich „Datenschutz & Einstellungen“ jedes Projekts berechnet live den sha384-...-Integritäts-Digest von /tracker.js, damit Websites die exakten Skript-Bytes in ihrem HTML-Tag <script integrity="..."> festlegen können.
  • Gegen SSRF gehärtete Benachrichtigungs-Webhooks: Ausgehende Webhooks für Slack, Discord und eigene Benachrichtigungen erzwingen ausschließlich https:// und blockieren localhost, Loopback, Link-Local und private IP-Bereiche nach RFC 1918.
  • Schutz vor CSV-Injection: Alle CSV-Exporte entschärfen Zellen, die mit Formelzeichen beginnen (=, +, -, @, Tab, CR).
  • HTTP-Sicherheitsheader: Antworten erzwingen X-Content-Type-Options: nosniff, X-Frame-Options: DENY, Referrer-Policy: strict-origin-when-cross-origin und eine strikte CORS-Allowlist für Origins.

4. Verfügbarkeitsüberwachung & Responsible Disclosure

Live-Prüfungen von Datenbank und Worker laufen alle 15 Minuten und werden auf der öffentlichen Seite Systemstatus veröffentlicht. Um eine Sicherheitslücke zu melden, schreiben Sie an contact@analytics.house oder kontaktieren Sie uns über Kontakt & Support.