Prozess: path-sandbox
Zweck
Sichert ab, dass jeder Dateipfad innerhalb von PROJECT_ROOT/storage liegt.
Verantwortlichkeit
Einzige Aufgabe: Pfadnormalisierung und Scope-Prüfung.
Eingaben
raw_path: stringaus der API-Anfrage.
Ablauf (SRP-konform)
1. Leere Eingabe ablehnen (VALIDATION_ERROR).
2. Absoluten Pfad ablehnen.
3. raw_path bereinigen (trim, normalisieren von Slashes).
4. Kombinieren mit FS_ROOT.
5. Realpath/Canonical-Path berechnen.
6. Prüfen, ob der berechnete Pfad mit FS_ROOT beginnt.
7. Im Erfolgsfall normalisierten relativen Pfad zurückgeben, sonst PATH_FORBIDDEN.
Vorbedingungen
FS_ROOTexistiert; Schreibrechte sind nur für Schreiboperationen erforderlich.- Pfad enthält keine Shell-Konstrukte (
\0, Steuerzeichen).
Nachbedingungen
- Entweder:
- gültiger, normalisierter Pfad (
path_ok=true), - oder kontrollierte Fehlerantwort.
Fehler
PATH_FORBIDDEN(403): Pfad außerhalb Sandbox.VALIDATION_ERROR(400): ungültige Zeichen/Leereingabe.
Testfälle
notes/../secret.txt=>PATH_FORBIDDEN/etc/passwd=>PATH_FORBIDDENnotes/tagebuch.txt(innerhalb Sandbox) => OK