Datenschutz: Fehlerberichte lassen sich abschalten
Uebertragung eines Befunds aus dem Security-Audit der alten Melo-App (21.08.2026) in die neue Codebasis. Ausgangslage hier war eine ANDERE als dort: LoggerService lud jeden Fehler unbedingt zu logs.baka-net.de hoch, es gab ueberhaupt keinen Schalter. In der alten App existierte er zwar, wirkte aber nicht ueber einen Neustart hinaus. Neu: - Schalter "Fehlerberichte senden" in den Einstellungen unter Datenschutz. - Sperre an der einzigen Stelle, durch die jeder Upload laeuft. Lokales debugPrint bleibt, aber nichts verlaesst das Geraet; der Puffer wird geleert, damit er nicht unbegrenzt waechst. - Die Entscheidung ueberlebt den Neustart: AppSettings speichert sie und reicht sie an den Logger durch, UND LoggerService liest sie beim Start zusaetzlich selbst - main() startet den Logger vor den Einstellungen, und schon dieses Zeitfenster darf bei Widerspruch nichts senden. - LoggerService bekam einen injizierbaren http.Client (Muster wie BakaAuth), damit sich belegen laesst, dass bei Opt-out KEIN Request rausgeht. Nicht uebernommen: der zweite Befund (Logout liess Zugangsdaten zurueck) trifft hier nicht zu. BakaAuth.abmelden() loescht genau die Schluessel, die anmelden() schreibt, und Navidrome hat mit loescheZugangsdaten() ein eigenes, vollstaendiges Trennen. Der alte Fehler - Logout raeumt tote Schluessel ab, waehrend die echten liegen bleiben - existiert in dieser Codebasis nicht. Standard bleibt bewusst "an", damit sich fuer bestehende Nutzer nichts ungefragt aendert. Opt-in waere datenschutzfreundlicher, ist aber eine Produktentscheidung. Tests: 304 gruen (vorher 295), 9 neue. Alle drei tragenden Stellen per Mutationsprobe geprueft. flutter analyze: keine Befunde. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QbuWT267W8rFDsaavANuEn
This commit is contained in:
co-authored by
Claude Opus 5
parent
2df85e650e
commit
239aae3ea3
@@ -5,6 +5,35 @@ Format angelehnt an [Keep a Changelog](https://keepachangelog.com/de/1.0.0/).
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### 🛡️ Fehlerberichte lassen sich jetzt abschalten (2026-08-21)
|
||||
- **Neu: Schalter „Fehlerberichte senden"** in den Einstellungen unter
|
||||
*Datenschutz*. Bisher lud `LoggerService` jeden Fehler unbedingt zu
|
||||
`logs.baka-net.de` hoch — es gab **keine** Möglichkeit, das abzustellen.
|
||||
- Aus heißt wirklich aus: Die Sperre sitzt an der einzigen Stelle, durch die
|
||||
jeder Upload läuft. Lokales Protokollieren (`debugPrint`) bleibt unberührt,
|
||||
aber nichts verlässt mehr das Gerät. Der Puffer wird dabei geleert, damit er
|
||||
im Dauerbetrieb nicht unbegrenzt wächst.
|
||||
- Die Entscheidung **überlebt den Neustart**: `AppSettings` speichert sie, und
|
||||
`LoggerService` liest sie beim Start zusätzlich selbst — denn `main()`
|
||||
startet den Logger, *bevor* die Einstellungen geladen sind, und schon dieses
|
||||
Zeitfenster darf bei Widerspruch nichts senden.
|
||||
- Hintergrund: Übertragung eines Befunds aus dem Security-Audit der alten
|
||||
Melo-App. Dort gab es den Schalter zwar, er hatte aber keine Wirkung über
|
||||
einen Neustart hinaus — die Anzeige stand auf „aus", gesendet wurde weiter.
|
||||
Hier ist das strukturell ausgeschlossen und durch Tests festgehalten.
|
||||
- Tests: 9 neue in `test/settings/diagnose_opt_out_test.dart` (**304 gesamt**,
|
||||
vorher 295). Alle drei tragenden Stellen per Mutationsprobe geprüft — ohne
|
||||
Sperre, ohne Durchreichen an den Logger und ohne Lesen beim Start fallen
|
||||
jeweils genau die zuständigen Tests um.
|
||||
- Für die Testbarkeit bekam `LoggerService` einen injizierbaren HTTP-Client
|
||||
(gleiches Muster wie `BakaAuth`), damit sich belegen lässt, dass bei
|
||||
Widerspruch wirklich **kein** Request rausgeht.
|
||||
|
||||
> Hinweis: Der Standard bleibt **an**, damit sich am bisherigen Verhalten für
|
||||
> bestehende Nutzer nichts ungefragt ändert. Ein Wechsel auf Opt-in (Standard
|
||||
> aus) wäre die datenschutzfreundlichere Variante — das ist eine
|
||||
> Produktentscheidung und bewusst nicht mit erledigt.
|
||||
|
||||
### 📋 Backlog-Datei angelegt (2026-08-21)
|
||||
- Neu: `BACKLOG.md` — bewusst zurückgestellte Punkte an einer Stelle, damit
|
||||
nichts stillschweigend liegen bleibt. Drin stehen aktuell der übersprungene
|
||||
|
||||
Reference in New Issue
Block a user