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.