dedlfix: Sicherheit - Hochgeladene XML-Datei parsen

Beitrag lesen

echo $begrüßung;

if($_FILES['uploaddatei']['error']=='UPLOAD_ERR_OK')

UPLOAD_ERR_OK ist eine Konstante. Wenn du ihren Namen in '' setzt, wird der als String interpretiert. Du vergleichst hier also einen Zahlenwert in dem error-Element mit einem String. Das kommt sicher nur zufällig das gewünschte Ergebnis zustande, oder auch nicht. Hast du mal versucht, einen der anderen Fehler-Werte zu provozieren? Beispielsweise lässt sich ganz einfach UPLOAD_ERR_NO_FILE erzeugen, was in der Praxis sicher auch gelegentlich vorkommen wird.

$DATEI=$_FILES['uploaddatei']['tmp_name'];

Dieses Umkopieren des Wertes bringt dir außer einer zusätzlichen Programmzeile nichts weiter ein. Verwende doch gleich $_FILES['uploaddatei']['tmp_name'] an der einen Stelle, an der du nun $DATEI stehen hast.

$parser=xml_parser_create();

Was ist, wenn der Parser nicht erfolgreich kreiert werden konnte?

array_push($tracksegment,$trackpoint);

Auf array_push() sollte man zugunsten der Schreibweise $array[] = $wert; verzichten. Diese Funktion hat erst dann einen Nutzen, wenn man mehr als ein Element gleichzeitig anhängen will.

$gpxdatei=fopen($DATEI,'r');

Auch hier ist wieder keine Fehlerbehandlung zu sehen. Es ist zwar zu erwarten, dass bei einem erfolgreichen Upload die Datei auch vorhanden ist, doch nicht umsonst riecht es manchmal vor Apotheken etwas streng nach Reittierverdauungszwischenprodukten.

xml_parse($parser, $data, feof($gpxdatei));

xml_parse() beschwert sich regelmäßig bei ungültigem XML. Ignorier das nicht, wenn du dir Folgefehler wegen diese Vogel-Strauß-Taktik ersparen möchtest.

Ist es sinnvoll oder nötig, bei der ganzen Sache mit stripslashes() zu arbeiten und wo und wie muß ich das dann einsetzen?

stripslashes() benötigt man, wenn man anderweitig das Feature Magic Quotes nicht deaktiviert bekommt. In deinem Fall dürfte es nur dann zuschlagen, wenn irgendjemand entgegen der Default-Einstellung magic_quotes_runtime aktiviert hat.

echo "$verabschiedung $name";