Skip to content

2. Preventing Path Traversal

Wie verhindert man Path Traversal

Schutz 1: Eingabe validieren
  • Eingabe überprüfen und schauen, dass nur die nötigsten Zeichen erlaubt sind. Gegebenenfalls mit RegEx.
    if (!userInput.matches("^[a-zA-Z0-9._-]+$")) {
        throw new SecurityException("Invalid filename");
    }
    
  • Pfade Whitelisten und überprüfen ob der Pfad in der Whitelist enthalten ist.
    if (!allowedFiles.contains(userInput)) {
        return "Access denied";
    }
    
Schutz 2: Pfad „kanonisieren“ (vereinheitlichen)

Selbst beim validieren könnte man mit diversen Tricks wie auch URL-Encoding Schlupflöcher finden lassen.

Darum: 1. Basis Verzeichnis anhängen 2. Pfad kanonisieren(auflösen nach Pfad) 3. Und dann den Pfad Validieren