Sk!ppy Skrevet 17. februar 2010 Skrevet 17. februar 2010 Hei. jeg har kodet dette nå nettopp: <?php $cat = "cat"; // Kategori handler $item = "item"; // item handler $folder = "inc/"; // folder containing categori and items $default = "hoved"; // if no page selected $end = ".php"; // fileextension if(empty($_GET[$cat])) { require $folder.$default.$end; // default } else { if(empty($_GET[$item])) { require $folder.$_GET[$cat]."/".$default.$end; // default } else { if(file_exists($folder.$_GET[$cat]."/".$_GET[$item].$end)) { require $folder.$_GET[$cat]."/".$_GET[$item].$end; } else { echo '<center>ERROR!</center><br>Siden du gikk inn på virker ikke!'; } } } ?> noen som har noen forslag til hvordan gjøre den bedre? såvidt jeg ser nå, så er det noen logiske brister, som jeg er LITT usikker på hvordan fikse. takk.
sxxxe83 Skrevet 19. februar 2010 Skrevet 19. februar 2010 Har ikke forslag til utbedringer. Men om du ikke har sett denne, så er den verd en titt Avansert dynamisk include. sXe
Ernie Skrevet 19. februar 2010 Skrevet 19. februar 2010 (endret) Absolutt ikke bra å kjøre input rett inn i file_exists, include eller require. De er dessverre sårbare for null-byte. Dvs. at "dette/er/flere/mapper/fil\x00.php" medfører at file_exists leter etter "dette/er/flere/mapper/fil". Kombinert med forflytting oppover i mappehierakiet ved å bruke .. kan enhver fil på serveren inkluderes. Endret 19. februar 2010 av Ernie
Sk!ppy Skrevet 20. februar 2010 Forfatter Skrevet 20. februar 2010 Hvordan skal jeg gjøre det ordentlig da? hvordan "låser" jeg den til inc/ mappa?
Ernie Skrevet 20. februar 2010 Skrevet 20. februar 2010 Du må sjekke at input-en ikke inneholder null-byte eller ../
sxxxe83 Skrevet 26. februar 2010 Skrevet 26. februar 2010 Hvordan skal jeg gjøre det ordentlig da? hvordan "låser" jeg den til inc/ mappa? Kanskje implementere && in_array // Mappe med php filer som skal inkluderes $incFiles = 'inc'; // Legg alle php filene i mappen "inc" i array $pagelist $pagelist = glob("{$incFiles}/{*.php}", GLOB_BRACE); // finnes i array?? if(isset($_GET['folder']) && in_array($_GET['folder'],$pagelist)) { //inkludering }
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå