Zum Hauptinhalt springen

Datei-Uploads absichern

Zwei grundsätzlich unterschiedliche Strategien

NexisCore nutzt je nach Zweck zwei unterschiedliche Absicherungsansätze:

Positivliste (Bilder-Mediathek, Bilder-Upload-Erweiterung)

Nur eine feste, kleine Liste erlaubter Bild-MIME-Typen (JPEG, PNG, GIF, WebP) - alles andere wird abgewiesen. Bewusst KEIN SVG in der Liste, da SVG-Dateien eingebettetes JavaScript enthalten können.

Sperrliste (allgemeine Datei-Upload-Erweiterung)

Da der Zweck hier gerade ist, praktisch beliebige Dateitypen teilen zu können, wäre eine Positivliste zu einschränkend - stattdessen eine Liste bekannter, gefährlicher Endungen (php-Varianten, ausführbare Dateien, Shell-Skripte). Sperrlisten sind grundsätzlich unvollständiger als Positivlisten - deshalb hier eine ZWEITE, unabhängige Absicherungsebene:

Die zweite Ebene: Ausführung technisch verhindern

Eine .htaccess-Datei im Uploads-Ordner sorgt dafür, dass eine dort liegende Datei niemals als PHP ausgeführt wird - selbst wenn die Sperrliste eine gefährliche Datei durchlassen würde. Wichtige Einschränkung: das wirkt nur bei Apache mit mod_php/AllowOverride. Bei PHP-FPM-Betrieb (heute sehr verbreitet) muss die Absicherung zusätzlich auf Server-Konfigurationsebene erfolgen.

Immer: Zufallsname statt Nutzereingabe

Der ursprüngliche Dateiname wird niemals für den tatsächlichen Speicherort verwendet - stattdessen ein zufällig erzeugter Name, die Dateiendung wird dabei aus dem GEPRÜFTEN Dateiinhalt abgeleitet, nicht aus dem vom Nutzer angegebenen Dateinamen. Verhindert den klassischen "Bild.php.jpg"-Umgehungsversuch zuverlässig.