# Sicherheits- und Datenschutzmodell

Das eigentliche Lernspiel ist ein statischer Browser-Export. Fortschritt bleibt
im `localStorage`; das simulierte Terminal führt keine Betriebssystembefehle
aus. Es gibt keine Anmeldung, Cookies, Analyse, Werbung oder Telemetrie.

## Anonyme Bestenliste

Die optionale „Hall of Tux“ nutzt eine kleine, getrennte Score-API mit SQLite.
Gespeichert werden nur:

- frei gewählter Alias,
- serverseitig berechnetes Ergebnis und Spielmodus,
- Anzahl der Fragen, Fehler und Hinweise,
- Integrität, Zeitpunkt und Laufdauer,
- zufällige Lauf-ID zur Verhinderung von Doppeleinträgen.

Es werden keine Konten, E-Mail-Adressen oder IP-Adressen in SQLite gespeichert.
IP-Adressen existieren nur kurzzeitig im Arbeitsspeicher der Rate-Limiter und in
den üblichen Infrastruktur-Logs. Aliase sind öffentlich sichtbar und dürfen
deshalb keine Klarnamen enthalten.

Der Server prüft Herkunft, Größe und Struktur der Anfrage, akzeptiert nur
bekannte Frage-IDs und berechnet XP, Integrität und Score aus den übermittelten
Einzelergebnissen selbst. Die API läuft ohne Root-Rechte, mit schreibgeschütztem
Dateisystem, ohne Linux-Capabilities, mit Ressourcenlimits und ohne
Internetzugang in einem eigenen internen Docker-Netz. Schreibzugriff besteht nur
auf das Score-Verzeichnis. Nginx begrenzt Methoden, Request-Größe, Rate und
Zeitüberschreitungen zusätzlich.

Die Bestenliste ist ein Lernspiel und kein manipulationssicherer
Prüfungsnachweis: Da Spiel und Fragen offen im Browser laufen, kann ein
entschlossener Nutzer plausible Ergebnisse nachbauen.

## Schatzsuche

`public/assets/scoreboard-backup.sqlite` ist absichtlich öffentlich. Sie ist
eine vollständig erfundene, statische Köder-Datenbank für eine harmlose
SQLite-Schatzsuche und enthält weder echte Scores noch Nutzer-, Server- oder
Zugangsdaten. Die produktive Datenbank liegt außerhalb des Webroots und ist
nur über die eingeschränkte API erreichbar.

## Schwachstellen melden

Bitte keine echten personenbezogenen Daten als Alias eintragen. Hinweise auf
Sicherheitsprobleme bitte über den im Codeberg-Profil angegebenen Kontaktweg
melden; keine Secrets in öffentliche Issues schreiben.
