AW: include Befehl absichern
Hi, danke für die schnelle Antwort. Leider ist es nicht möglich einfach Pfade herauszulassen, da pfade auch in der form ./test.php oder sonstirgendwas vorkommen können. Ich habe daraufhin aber eine Idee gehabt, indem ich einen kompletten pfad zusammenbastel und dann prüfe, ob die Datei existiert.
//include befehl entschärfen
$include_data=$_GET['mod'];
//eigenen Arbeitspfad ermitteln
$path=getcwd();
//die zu includenen string auf . prüfen: wenn ja muss dieser entfernt werden und durch / ersetzt werden um einen voll gültigen pfad zu bekommen
if (substr($include_data,0,1)==".") {
$vollerpfad=$path.substr($include_data,1);
}
else {
$vollerpfad=$path."/".$include_data;
}
//es wird geprüft ob es sich um eine datei handelt, die auf dem Server liegt wenn ja darf sie ausgeführt werden
if (is_file($vollerpfad)) {
print "Datei vorhanden";
include($include_data);
}
else {
print "Datei NICHT vorhanden";
include("anfangsdatei.html");
}
Ist das so möglich? Kann man über include sonst noch schädlichen code einschleusen oder ist dies nicht möglich?
mfg Schwierle
|