Thorsten Steffen: Ein paar Fragen zu Datei-Uploads

Beitrag lesen

Hio,

Gar nicht. Du prüft, ob der Anwender ein Bild mitgeschickt hat oder nicht. Hast Du multipart/mixed in deinem FORM-Tag stehen?

Nein, multipart/form-data
Was ist der Unterschied?

hm, multipart/mixed kenne ich nun auch nicht in Verbindung mit Formularen. Ka ob das dort überhaupt Sinn macht. Verwende multipart/form-data.

  1. Kann ich die Breite des File-Feldes nicht ändern?

beschränkt kannst du das. Mit
<input type="file" size="1" /> z.b. minimierst du die Breite so klein wie es geht. Ganz wegmachen lässt sich das nicht.

Du kannst überprüfen, ob der User einen Upload gemacht hat und ob der Upload Deinen Anforderungen (MIME Type, Dateigröße, Dateiinhalt) entspricht.

Kann so eine Upload-Funktion denn gefährlich sein?

ja, kann Sie. Weil du einem benutzer deiner Seite erlaubst eine Datei auf deinen Webspace hochzuladen. Wenn er nun die Möglichkeit hätte ausführbare Skripte dort reinzuladen und diese auch auszuführen, hätte er ziemlich viele Möglichkeiten. Stell dir mal vor was jemand machen kann wenn er ein PHP-Skript auf deinen Webspace einspielt ...

Im Moment prüfe ich durch:
$datei = getimagesize($_FILES["datei"]["tmp_name"]);
if ($foto[2]=="") { ...ABBRUCH... }
ob wirklich ein Bild hochgeladen wurde.

Ist das ausreichend?

in welchem Zusammenhang steht $datei und $foto? Verstehe ich nicht so ganz.
Ausreichend ist sie eigentlich schon. Zumindest im Punkte Sicherheit, aber nicht optimal. Da getImageSize sicherlich mehr Formate unterstüzt als du verwendet möchtest.
Imho ist das ein Ansatzfehler. Verlasse dich nicht auf diese Funktion und nicht darauf welche Formate sie unterstüztz. Das könnte sich a.) verändern und b.) ist das sicherlich nie gleich den Formaten mit denen du arbeiten willst.
Über $_FILES["datei"]["type"] ist der bessere Weg. Dort kannst du dann nach image/gif, image/jpeg, imnage/pjpeg, image/png prüfen wenn du z.b GIF, JPEG und PNG verwenden möchtest.

gl & hf

Thorsten