Hello,
Du willst jetzt aber nicht einen Safe Mode für Datei-Uploads einführen?
Das hat nichts mit _dem_ "Safe-Mode" zu tun,Deswegen schrieb ich ja "einen". Der Safe Mode ist bekanntlich die falsche Antwort auf Probleme beim Massenhosting mit Einbindung PHPs als Modul in den Apachen gewesen. Das Sicherheitsproblem, wenn alle Kunden/Anwendungen unter einem User laufen, muss anderweitig gelöst werden. Zum Beispiel mit CGI und dediziertem Nutzer je Kunde/Anwendung.
aber wenn Du es so nennen willst, nenne es ruchi "safe_move_uploaded_file()". Das wäre (mMn) die einzige Maßnahme, die eine Manipulation der hochgeladenen Dateien des Users A.a durch den User B.x verhindern kann, wenn ein gemeinsames Upload-Verzeichnis genutzt wird.
Das Problem löst sich von selbst, wenn jeder sein eigenes Upload-Verzeichnis konfiguriert bekommt. Die Lösung des Problems ist bereits da, genau wie die Mittel im Betriebssystem plus Tools (suexec) den Safe Mode überflüssig machen.
Sag ich doch die ganze Zeit.
Nun habe ich mal eben versucht, einen Pluspunkt für Euren Standpunkt (move_uploaded_file() sei notwenig) zu finden, und dann ist Dir das auch nicht recht.
Also fassen wir mal zusammen:
"Die Lösung des Problems ist bereits da"
Ich substantiiere:
Durch Wahl eines eigenen Upload-Verzeichnisses pro Domain (Useraccount),
konsequente Verwendung von open_basedir
und Benutzung des Arrays $_FILES
kann man gezielt und sicher Dateien hochladen lassen, ohne Angst haben zu müssen, dass diese vor dem persistenten Speichern noch manipuliert werden.
Das entbindet den Programmierer selbstverständlich nicht, die übrigen Sicherheitsüberlegungn noch zu berücksichtigen:
- Inhalt der Datei
- Ausführbarkeit verhindern
- ...
die *_move_uploaded_file()-Funktionen sind damit also obselet geworden und brauchen nicht weiter gepflegt zu werden...
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg