Thread dateien löschen (25 answers)
Opened by DerVersuch at 2010-01-14 22:01

GwenDragon
 2010-01-15 11:06
#130534 #130534
User since
2005-01-17
14766 Artikel
Admin1
[Homepage]
user image
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)

View full thread dateien löschen