Thread dateien löschen
(25 answers)
Opened by DerVersuch at 2010-01-14 22:01
Nachdem ich nicht viel über dein Skript weiß, kann ich erst mal nur vermuten: Du lässt dir von außen wohl über einen CGI-Parameter den Dateinamen geben.
Wenn der Taint-Modus (Parameter -T) aktiv ist, warnt Perl vor von Außen eingelesenen Daten, die "verschmutzt" (gefährlich) sein könnten. Den solltest du aber überprüfen, indem du ein Match darauf anwendest, ob der Dateiname gültig ist. http://www.w3.org/Security/faq/wwwsf4.html#CGI-Q17 Wenn ich also vom Skript folgende Daten bekomme: C:/xampp/htdocs/mail/cgi-bin/mail.pl?dateiname=brat.wurst dann kann ich das so einlesen: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #!/usr/bin/perl -T use strict; use warnings; use CGI; my $cgih = CGI->new(); my $filename = $cgih->param('dateiname'); if ($filename =~ /^([a-z]+)(\.[a-z]+)?$/i ) { # es werden nur Dateinamem aus Buchstaben mit Punkt und Buchstaben für den Dateityp zugelassen my $sauberer_dateiname = "$1$2"; # durch die Prüfung ist das Ergebnis "sauber" (untainted) my $fh; open($fh, '>', $sauberer_dateiname) or die "$!"; print $fh "Datei: $sauberer_dateiname\n"; # Datei weiterverarbeiten close ($fh) or die "$!"; } else { die ("Ungültiger Dateiname $filename"); } Wenn du etwa von deinem Code zeigen könntest, wüssten wir eher wo es hakt. //EDIT: Fehler im Code verbessert Last edited: 2010-01-15 11:36:43 +0100 (CET) |