Inderdaad, wat TJVB tvb al zegt. Dit script is zo lek als het maar kan. Je stelt de gebruiker in staat om elk bestand uit de opgegeven map te includen.
Niet alleen uit die map, je kunt alles includen waar het script bij kan.
En als als je ../index gebruikt kom je in een loop (tenminste als index het bestand is waar dit in staat) Je include dan steeds zichzelf.
Zo maak je het veilig:
<?php
$baseDir = __DIR__.'/sections';
// Check op niet ingestelde vars
$section = isset($_GET['section']) ? $_GET['section'] : '';
$page = isset($_GET['page']) ? $_GET['page'] : '';
// Los .. en andere narigheid op
$file = realpath(sprintf("%s/%s/%s.php", $baseDir, $section, $page));
// Check of de file bestaat en of deze onder de baseDir valt
if(file_exists($file) && strpos($file, $baseDir) === 0)
include $file;
else
error404(); // Een foutmelding
// De meest basic 404 melding. Geeft de standaardpagina van de browser weer
// Als je een eigen pagina wil maken, doe dat dan tussen de 2 regels in
function error404() {
header('HTTP/1.0 404 Not Found');
exit;
}
?>
Duidelijk?