Blubb: Prüfen einer geuploadeten Datei

Beitrag lesen

Hallo,

für die Sicherheit soll eine Datei, die mit einem input type="file" Feld hochgeladen wurde, geprüft werden.

Sehr gut.

Nun will ich 2 Dateiarten zulassen. eine .txt und eine mit selbstdefinierten Ende (jetzt mal als .user).

Achtung! Bitte nicht Dateinamen oder -endung mit dem Inhalt verwechseln bzw. von Einem auf das Andere Schließen.

Bei .txt teste ich:
$_FILES['fileName']['type']=="text/plain".

Ein Blick ins Handbuch verrät: The mime type of the file, if the browser provided this information. An example would be "image/gif". This mime type is however not checked on the PHP side and therefore don't take its value for granted.

Du musst dir also etwas anderes einfallen lassen. Ich würde file in Kombination mit shell_exec und escapeshellcmd vorschlagen. Aber bitte bitte auch hier höchste Vorsicht im Umgang mit Benutzereingaben (Dateiname, etc.) walten lassen.

Wenn ich es vom Firefox absende wird es abeblockt, da in $_FILES['fileName']['type'] application/oxtet-strem steht.

Genau. Siehe oben. Diese Angabe ist nicht verlässlich.

Wie prüfe ich am besten die hochgeladene Datei?

Das beste wäre, du überprüfst den Inhalt unabhängig vom Namen und Typ. Wenn das nicht geht, dann musst du sehr genau darauf achten, wie die vom potenziell bösen User hochgeladene Datei im System behandelt wird.
Worst Case wäre, wenn die Datei Programmcode enthalten kann, der dann mit den Rechten des Webservers ausgeführt wird oder potenziell schädlicher Clientcode (JavaScript) bei einem anderen Benutzer angezeigt wird.

In dem ich selber den Dateiname nehme, bei dem Punkt trenne und schaue, ob nach dem punkt "txt" oder "user" steht?

NEIN!

Grüße