Gå til innhold

Forbedre sidehandler script?


Anbefalte innlegg

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.

Lenke til kommentar
Videoannonse
Annonse

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 av Ernie
Lenke til kommentar

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
}

Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...