Logging Privacy¶
Diese Leitlinie beschreibt die minimalen Guardrails fuer Backend-Logs und Client-Logs in TargetShot.
Ziel¶
- Logs sollen betriebliche Fehlerdiagnose ermoeglichen.
- Logs sollen keine unnötigen personenbezogenen Daten oder Secrets transportieren.
- Client-Logs sind ein Admin-Werkzeug und kein frei lesbarer Debug-Stream.
Verbotene Inhalte¶
Folgende Inhalte duerfen nicht unkontrolliert in Logs oder Client-Log-Payloads landen:
- Access-Tokens, Refresh-Tokens, JWTs, Passwoerter, Secrets und Authorization-Header
- rohe Request-Bodies aus Mitglieder-, Auth- oder Admin-Pfaden
- vollstaendige Mitgliederobjekte oder Beispiel-Responses
- direkte E-Mail-Adressen, sofern eine maskierte Form fuer den Betriebsfall ausreicht
- hochaufloesende Browser-Fingerprints oder client-seitig gesetzte Rollenfelder
Client-Logs¶
GET /api/client-logsist nur fuer Admins vorgesehen.- Client-Logs speichern nur reduzierte Betriebsmetadaten:
level/type- redacted
message routestatusmethodlatencyMsonline- grob zusammengefasster
userAgent - Rohe
urlund client-seitige Rollenwerte werden nicht persistiert. - Low-signal
console.log- undconsole.info-Rauschen wird nicht an den Server weitergereicht.
Stack: eine benannte Ausnahme fuer die Mobile-App (seit 01.09.2026)¶
- Aus dem Web wird
stackweiterhin nicht persistiert. - Aus der App (
source: 'mobile') wirdstackpersistiert — redigiert wie diemessageund hart begrenzt auf 40 Zeilen bzw. 2000 Zeichen. - Betriebsnutzen: In einem Store-Build gibt es weder Konsole noch Sourcemaps im Zugriff. Ohne Stack ist eine Meldung wie „undefined is not an object" nicht verortbar, und der Fehler bleibt unauffindbar. Im Browser ist der Stack verzichtbar, weil der Tester die Konsole hat.
- Datenschutzbedarf: Ein Hermes-Stack traegt Bundle-Positionen
(
index.bundle:1:2), keine Nutzerdaten und keine URLs mit Parametern — anders als ein Browser-Stack. Er laeuft zusaetzlich durch dieselbe Redaktion (Bearer-Tokens, JWTs, Secrets, E-Mail-Adressen). - Der Stack ist ueber die Admin-Lesepfade sichtbar; die Aufbewahrung von 30 Tagen und die Admin-Beschraenkung gelten unveraendert.
Weitere Felder aus der App¶
source,platformundappVersionsind additiv: Web-Clients senden sie nicht, das alte Format bleibt gueltig.platformundappVersionsind Kennzeichen, keine Freitexte — sie werden aufA-Z a-z 0-9 . _ ( ) -reduziert und ersetzen bei App-Meldungen den nutzlosen Request-User-Agent (okhttp/…,CFNetwork/…) durchTargetShot 1.0.1 (42) / ios 18.0.- Als
routemeldet die App das Routen-Muster (/duelle/[id]), nicht den aufgeloesten Pfad — eine fremde Kennung im Pfad wuerde sonst mitgehen.
Retention und Rate¶
- Lokale Browser-Logs werden derzeit fuer maximal
7 Tageim Local Storage gehalten. - Die App haelt ihren Fehlerpuffer nur im Speicher (max. 50 Eintraege, endet mit dem Prozess) und sendet je Sitzung hoechstens 60 Eintraege in Buendeln zu 20; liegengebliebene Buendel (Drossel, Fehlschlag, Rest eines Bursts) schiebt ein Weckruf-Timer nach, ohne auf einen neuen Fehler zu warten.
- Das Rate-Limit der Route (10 Requests/Minute) gilt je IP — hinter einer Vereins-IP teilen sich alle Geraete plus Web EIN Budget. Die App wertet 429 deshalb nicht als Fehlschlag Richtung Aufgeben, sondern wartet 75–105 s (mit Streuung) und versucht es erneut.
- Persistierte Backend-Client-Logs werden auf eine operative Retention von
30 Tagenbegrenzt. - Ingest-Payloads werden pro Request hart begrenzt und auf allowlist-basierte Typen reduziert.
Members- und Admin-nahe Server-Logs¶
- Member-Fehlerpfade loggen keine kompletten Sample-Responses.
- Reconcile-/Sync-Fehler loggen keine rohen Bodies.
- Direkte Kontaktinformationen werden fuer Logs wenn moeglich maskiert.
- Club-Kontext soll in Logs bevorzugt als Count oder Scope-Meta statt als volle Liste auftauchen.
Review-Regel¶
Bei neuen Logging-Pfaden gilt:
- Nur loggen, was fuer Betrieb oder Fehlerdiagnose wirklich noetig ist.
- Freie Textfelder zuerst redigieren oder auf reduzierte Meta-Informationen abbilden.
- Admin-/Support-Lesepfade explizit absichern.
- Neue Client-Log-Felder nur einfuehren, wenn ihr Betriebsnutzen und Datenschutzbedarf zusammen dokumentiert sind.