Betrieb

Sicherheit

Zugriff auf Dateien

Hochgeladene Dateien liegen außerhalb des Dokumentenstamms in storage/app/private/uploads/. Es gibt keine URL, die direkt auf eine Datei zeigt. Jeder Abruf läuft durch das Programm und damit durch die Prüfung von Ablauf, Anzahl und Passwort.

Der Dateiname auf der Platte ist eine Zufallskennung — aus dem Verzeichnis lässt sich nicht ablesen, was gespeichert ist.

Dateien werden immer als Anhang ausgeliefert, niemals zur Anzeige im Browser. Damit kann eine hochgeladene HTML- oder SVG-Datei kein Skript im Kontext der Installation ausführen.

Ein Download-Link enthält einen unvorhersagbaren Token (40 Zeichen). Zusätzlich lassen sich Ablauf, Download-Anzahl und ein Passwort setzen. Ein abgelaufener oder ausgeschöpfter Link antwortet mit Status 410 und der Bitte, einen neuen Link anzufordern.

Einen Download-Link „deaktivieren" gibt es nicht: Zum Zurückziehen dient das Löschen. Deaktivieren gibt es nur bei Upload-Links.

Anmeldung

Fünf Fehlversuche pro Adresse und IP-Adresse sperren die Anmeldung für eine Minute. Passwörter werden mit bcrypt gespeichert. „Passwort vergessen" antwortet immer gleich, unabhängig davon, ob es die Adresse gibt — sonst wäre die Maske ein Werkzeug zum Aufspüren vorhandener Konten.

Verschlüsselung gespeicherter Dateien

Optional pro Datei, AES-256-GCM. Sie schützt gegen Lesen der Platte oder eines Backups — nicht gegen jemanden, der Zugriff auf die laufende Anwendung samt Schlüssel hat.

Das Ver- und Entschlüsseln geschieht im Hintergrund. Der Job schreibt eine neue Datei und schaltet erst danach um, deshalb bleibt der öffentliche Download währenddessen verfügbar und liefert die alte Fassung aus. Gesperrt sind in dieser Zeit nur drei Dinge: das Löschen des Links, der Direkt-Download durch den Besitzer und ein erneutes Umschalten.

Ein Marker, der älter als zwei Stunden ist, gilt als verwaist (abgestürzter Job) und blockiert nicht dauerhaft.

Externe Uploads

Der öffentliche Upload ist der einzige schreibende Zugang für Personen ohne Konto und entsprechend eng gebaut:

  • Jede Aktion prüft den Link erneut — eine offene Seite im Browser ist keine Berechtigung.
  • Der Platz im Zähler wird vor dem Abschluss unter Datenbank-Sperre reserviert. Sonst könnten zwei gleichzeitige Uploads beide „noch frei" sehen und das Limit überschreiten. Bricht ein Upload danach ab, ist ein Platz verbraucht: ärgerlich, aber harmlos — umgekehrt wäre es eine Lücke.
  • Den Ablauf der abgelegten Datei bestimmt der Link, nicht der Fremde. Ob sie verschlüsselt gespeichert wird, entscheidet FILESHARE_ENCRYPT_UPLOADS — der Upload-Link hat dafür kein eigenes Feld.
  • Honeypot-Feld gegen Bots, Drosselung auf allen öffentlichen Wegen.
  • So abgelegte Dateien sind als „von extern" markiert und nur nach Anmeldung abrufbar. Ein Versand an Dritte durch das System wird abgelehnt.

Was protokolliert wird

  • Jeder Download: IP-Adresse, Zeitpunkt, Browserkennung.
  • Jeder Versand eines Links durch das System: wer, an welche Adresse, welcher Link.
  • Jedes Zurücksetzen einer Zwei-Faktor-Anmeldung durch einen Administrator.
  • Bei externen Uploads die IP-Adresse des Uploaders, begrenzt auf die eingestellte Frist.

Das gehört in die Datenschutzerklärung.

Was das System bewusst nicht tut

  • Keine Prüfung auf Schadsoftware. Es gibt keinen Virenscanner. Die Oberfläche und die Benachrichtigungen sagen das offen.
  • Keine Ende-zu-Ende-Verschlüsselung. Der Server kann die Inhalte lesen.
  • Kein Papierkorb. Löschen ist endgültig.

Quelle dieser Seite: docs/betrieb/sicherheit.md im Repository. Sie wird beim Bauen daraus erzeugt — Änderungen gehören in die Markdown-Datei, nicht in diese Seite.