[PHP] path traversal veilig?

Gestart doorDylan0 reacties37 weergaven

1 berichten · pagina 1 van 1

Dylan

Lid · Topicstarter

Berichten
14.025
Reputatie
1
Punten
0,01
Lid sinds
Laatst gezien
Hoi,

Toen ik dit script aan een aantal mensen liet zien zeiden ze dat dat gevaarlijk was, als je dan naar ?p=../../../../../../etc/passwd gaat dat je dan mijn server kan hacken. Maar ik ben het daarmee oneens want in de eerste 10 regels van het script word er gecontroleerd welke files in het mapje pages zit, later word dan gekeken of het bestand wat aangevraagd word en in de array zit.

Codeblok (voorbeeld.php):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23


if(isset($_GET[p])) {
$allowedPages = array();
$openDir = opendir(./pages/);

while(false !== ($entry = readdir($openDir))) {
$allowedPages[] = $entry;
}


closedir($openDir);

$_GET[p] = preg_replace(/([^.]+)(?:.[^.]+)?$/, "$1.php", $_GET[p]);
$_GET[p] = preg_replace(/.[^.]+$/, .php, $_GET[p]);

if(in_array($_GET[p], $allowedPages)) {
include ./pages/.$_GET[p];
}
else {
header("HTTP/1.0 404 Not Found");
header("Location: ./404");
exit();
}
}

?>

Is het nou veilig of niet?
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren