Ist application / octet-stream ein sicherer MIME-Typ, der akzeptiert wird, wenn CSV-Dateien akzeptiert werden?

8

Ich erstelle ein Webformular, um eine CSV-Datei zu erstellen, um den Inhalt dann in eine Kontaktdatenbank zu importieren. Während der Entwicklung habe ich bemerkt, dass beim Hochladen einer CSV-Datei der mir zur Verfügung stehende MIME-Typ application/octet-stream ist.

Eine schnelle Websuche bei Google sagt mir, dass application/octet-stream ein generischer MIME-Typ für Binärdateien ist, der von einer .csv bis zu einer .exe -Datei reicht, was mir nicht sicher erscheint Die einzige andere Information, die ich brauche, um den Dateityp zu bestimmen, ist der ursprüngliche Dateiname. Und dies kann leicht von jedem mit grundlegenden Computerkenntnissen geändert werden.

Wie kann ich sicherstellen, dass eine über ein Webformular in PHP hochgeladene CSV-Datei tatsächlich eine CSV-Datei mit den oben genannten Informationen ist?

    
Martin Bean 16.03.2011, 10:46
quelle

3 Antworten

6

Das ist richtig, application/octet-stream ist ein generischer MIME-Typ.

Sie könnten überprüfen, ob die Datei die CSV-Erweiterung hat und verwenden Sie die Funktion fgetcsv () um festzustellen, ob der Inhalt der Datei gültig ist. Diese Funktion gibt NULL oder boolean false zurück, wenn beim Lesen der Datei Probleme auftreten.

    
Michiel Pater 16.03.2011, 10:51
quelle
1

Um eine Datei zu validieren, sollten Sie sich nicht auf den Mime-Typ verlassen, da dieser leicht manipuliert werden kann. Das Gleiche gilt für die Dateierweiterung. es dauert nur 15 Sekunden, um diese Art von "Sicherheitskontrollen" zu umgehen.

Die only sichere Methode besteht darin, den Inhalt der Datei zu überprüfen, um festzustellen, ob sie gültige csv-Daten enthält.

    
oezi 16.03.2011 10:54
quelle
0

Beim Hochladen von Dateien sollten Sie niemals nie auf MIME-Typen vertrauen. Sie können vom Benutzer geändert werden.

    
ChrisH 16.03.2011 10:54
quelle

Tags und Links