Bring!-Passwort und Tokens liegen im Klartext in der SQLite-DB #15

Closed
opened 2026-09-09 20:12:46 +00:00 by Aceless · 1 comment
Owner

SettingsService speichert alle Bring!-Zugangsdaten ueber DatabaseHelper.settingsTable als unverschluesselte Key-Value-Zeilen:

  • bring_password
  • bring_access_token
  • bring_refresh_token
  • bring_user_uuid, bring_public_uuid

Die App nutzt fuer den eigenen Auth-Token bereits flutter_secure_storage (api_client.dart, auth_service.dart). Fremd-Credentials landen dagegen in einer Datei, die auf gerooteten Geraeten und in ungefilterten Backups lesbar ist.

Verstaerkend: SettingsScreen schreibt bei jedem Tastendruck:

onChanged: settingsNotifier.setBringPassword,

Das ist ein DB-Write pro Zeichen und legt zusaetzlich Zwischenstaende ab.

Vorschlag: Bring!-Secrets nach flutter_secure_storage migrieren, nur nicht-sensible Felder (Listenname, Wochenstart) in SQLite lassen und das Speichern auf onEditingComplete statt onChanged umstellen.

Dateien: app/lib/services/settings_service.dart, app/lib/screens/settings_screen.dart:120-191

`SettingsService` speichert alle Bring!-Zugangsdaten ueber `DatabaseHelper.settingsTable` als unverschluesselte Key-Value-Zeilen: - `bring_password` - `bring_access_token` - `bring_refresh_token` - `bring_user_uuid`, `bring_public_uuid` Die App nutzt fuer den eigenen Auth-Token bereits `flutter_secure_storage` (`api_client.dart`, `auth_service.dart`). Fremd-Credentials landen dagegen in einer Datei, die auf gerooteten Geraeten und in ungefilterten Backups lesbar ist. Verstaerkend: `SettingsScreen` schreibt bei **jedem Tastendruck**: ```dart onChanged: settingsNotifier.setBringPassword, ``` Das ist ein DB-Write pro Zeichen und legt zusaetzlich Zwischenstaende ab. **Vorschlag:** Bring!-Secrets nach `flutter_secure_storage` migrieren, nur nicht-sensible Felder (Listenname, Wochenstart) in SQLite lassen und das Speichern auf `onEditingComplete` statt `onChanged` umstellen. Dateien: `app/lib/services/settings_service.dart`, `app/lib/screens/settings_screen.dart:120-191`
Author
Owner

Behoben auf Branch frontend-improvements.

Bring!-Passwort, Access-/Refresh-Token und die UUIDs liegen in flutter_secure_storage. Altbestand wird beim ersten Lesen migriert und aus der DB geloescht; gespeichert wird bei onEditingComplete statt pro Tastendruck.

Commits
  • 47edeeb Added Claude
  • 9b16a6e Einstellungen mit Ladebalken, url_launcher-Plugin-Registrierung
  • 8ad68a4 Settings erreichbar, Secrets sichern, Theme-Tokens, toter Code weg, Tests
  • bf204d3 Rezeptliste, Detail, Vorschlaege und Spaces ueberarbeiten
  • d85c681 Rezept-Editor: Absturz, stiller Datenverlust und Controller-Leaks beheben
  • d970fbe Provider-State korrigieren, Fehler sichtbar machen, Wochenlogik zentralisieren
  • 71e557d Start entkoppeln, API-Client haerten, Theme auf Tokens umstellen

flutter analyze: 0 Issues. flutter test: 22 Tests gruen.

Behoben auf Branch `frontend-improvements`. Bring!-Passwort, Access-/Refresh-Token und die UUIDs liegen in flutter_secure_storage. Altbestand wird beim ersten Lesen migriert und aus der DB geloescht; gespeichert wird bei onEditingComplete statt pro Tastendruck. <details><summary>Commits</summary> - 47edeeb Added Claude - 9b16a6e Einstellungen mit Ladebalken, url_launcher-Plugin-Registrierung - 8ad68a4 Settings erreichbar, Secrets sichern, Theme-Tokens, toter Code weg, Tests - bf204d3 Rezeptliste, Detail, Vorschlaege und Spaces ueberarbeiten - d85c681 Rezept-Editor: Absturz, stiller Datenverlust und Controller-Leaks beheben - d970fbe Provider-State korrigieren, Fehler sichtbar machen, Wochenlogik zentralisieren - 71e557d Start entkoppeln, API-Client haerten, Theme auf Tokens umstellen </details> `flutter analyze`: 0 Issues. `flutter test`: 22 Tests gruen.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Aceless/RecipePlanner#15
No description provided.