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?
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.
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.
Tags und Links php file-upload csv