xwolf: Dateiname bei File-Upload

Beitrag lesen

Hi,

Ich habe folgendes Problem:
Per Formular und Perl mache ich einen FileUpload. Nun ist es so, dass, wenn ich eine Datei von Windows hochlade der ganze Pfad als Dateinname angegeben wird, also z.B. "C:\Verzeichnis\bild.jpg" anstatt nur "bild.jpg". Auf einem Mac funktionierts aber.

Weiss jemand Rat?

Du brauchst mehr Rat :)
Frage mal: Koennte nicht ein boeser Mensch -wie z.B. ein BWfH-
auf die Idee kommen, ein modifiziertes Formular und modifizierte Dateinamen fuer den Upload zu verwendden um eine Datei mit so einem Namen aufzurufen:
"blafasel.txt|rm+-Rf+*"

(Das testest du jetzt aber nicht aus!!!!)

Wie auch immer: Sorg dafuer das alle Eingaben der
User nichts anrichten koennen.
Unten ein Vorschlag:

...
$fname =~ s/[a-z-A-Z0-9-_/\:.]+//gi;

Loesche gefaehrliche Zeichen und sonstigen Muell, der nicht

in einem Dateinamen gehoert.

my @parts = split(/[/\]+/,$fname);

Splitte das Ding auf

my $filename = pop(@parts);

Nehm das letzte Teil

if (-r "$SAVE_DIRECTORY/$fname") {
  print STDERR "Ueberschreibe alte Datei...\n";
}

open(DAT, ">$SAVE_DIRECTORY/$fname") || print STDERR 'Error processing file: ',$!;
...

Uebrigens ist ein die()-Aufruf in ein CGI-Skript unschoen.

Ciao,
 Wolfgang