O'Reilly logo

PHP-Sicherheit: PHP/MySQL-Webanwendungen sicher programmieren by Stefan Esser, Christopher Kunz

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

8 Upload-Formulare188
HTML-Upload-Formular
Dieses Formular erlaubt das Hochladen von beliebigen Dateien bis zur
Größe von 51200 Byte. Diese Größenbeschränkung wird durch das
Hidden-Feld
MAX_FILE_SIZE bestimmt. Die Dateigröße sollte auf dem
Server selbst auch nochmals überprüft werden, denn diese Angabe ist
ein Wert, der von einem nicht vertrauenswürdigen Client kommt. Die
Angabe
MAX_FILE_SIZE kann auf dem Client an die Bedürfnisse des
Angreifers angepasst worden sein.
upload_max_filesize
In der Konfigurationsdatei php.ini kann die Option upload_
max_filesize
auf einen Wert gesetzt werden, der nicht überschritten
werden darf.
Der Inhalt des Formularfeldes
filename muss ebenfalls überprüft
werden, vor allem, falls die aus diesem Feld resultierende Variable
zusammen mit einer Fehlermeldung angezeigt werden soll. Durch
JavaScript oder andere unter Umständen betriebssysteminterne Steuer-
zeichen können XSS-Lücken (mehr zu XSS im Kapitel 4 »Cross-Site
Scripting«) oder Fehler auf Dateisystemebene entstehen.
8.3 PHP-interne Verarbeitung
upload_tmp_dir
PHP nimmt diese Datei entgegen und speichert sie in dem Pfad, der in
der Konfigurationsoption
upload_tmp_dir angegeben wurde. Dort wird
diese Datei aber nicht unter ihrem regulären Namen gespeichert, son-
dern erhält von PHP einen temporären, zufälligen Namen. PHP gene-
riert danach ein superglobales Array namens
$_FILES, in dem alle
Angaben über diese Datei enthalten sind.
Informationen über eine hochgeladene Datei werden in dem Array
$_FILES['filename'] gespeichert. Der Array-Schlüssel »filename« ist
hierbei der Name des Eingabefeldes im Formular. Sieht der HTML-
Code für dieses Eingabefeld folgendermaßen aus:
<input type="file" name="uploadfile" />
so werden alle Informationen über die hochgeladene Datei unter
$_FILES['uploadfile'] abgelegt, und zwar ebenfalls in einem assoziati-
ven Array. Dieses Array enthält folgende Felder:
name: der ursprüngliche Name der Datei
type: der MIME-Type der Datei
size: die Größe der Datei in Bytes
tmp_name: der von PHP vergebene temporäre Name, etwa
/tmp/php_ep0AA1
error: ein Errorcode (falls ein Fehler aufgetreten ist,
sonst ist dieses Feld leer)

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required