Einbinden einer Datei, die über GET übergeben wurde
Jasmin
- perl
0 eddi
Hallo,
Ich habe mit mod_rewrite eine Umleitung eingerichtet. Diese sieht so aus:
RewriteRule ^(.*)(\?.*)?$ index.cgi$2 [E=REQUEST:$1]
Die index.cgi führe ich im tainted-Modus auf. Dadurch werden unter anderem aus @INC "." gestrichen und einige Variablen in @ENV als "tainted" deklariert.
Nun gehe ich in etwa so vor (index.cgi):
my $inhalt = 0;
if (defined $ENV{REDIRECT_REQUEST}) {
my $req = $ENV{REDIRECT_REQUEST};
my $filename = "inhalt/$req.pm";
if (-f $filename) {
$inhalt = require $filename;
}
}
$inhalt || print header(-type => "text/html; charset=UTF-8", -status => "404 Not Found");
Dabei entsteht durch oben erwähnten tainted-Modus Probleme. Ich könnte nun das Problem umgehen, indem ich einfach mit lib "." wieder zu @INC hinzufüge und $req einer (mehr oder weniger sinnlosen) Prüfung unterziehe oder den Tainted-Modus einfach abschalten.
Mein Frage ist also ob die Lösung aus sicherheitstechnischen Aspekten für euch in Ordnung wäre. Aus meiner Sicht wird auf existieren der Datei geprüft, und wenn jemand eine Datei erstellen kann, kann er sie auch ohne dieses require ausführen.
Grüße
Jasmin
Hallo,
my $filename = "inhalt/$req.pm";
if (-f $filename) {}
Aus meiner Sicht wird auf existieren der Datei geprüft, und wenn jemand eine Datei erstellen kann, kann er sie auch ohne dieses require ausführen.
sehe ich auch so. Zumal nur auf Scripte innerhalb des Verzeichnis "inhalt" zugegriffen werden kannt. Kann keiner Daten in diesem Verzeichnis manipulieren, gibt es auch keine Bedenken.
Gruß aus Berlin!
eddi