ZoRaC Skrevet 23. november 2006 Del Skrevet 23. november 2006 (endret) Holder på å lage et filarkiv som skal gjøre det mulig å browse gjennom mapper og vise filer. I et slikt script er det jo enormt viktig at man ikke tillater browsing høyere opp i filstrukturen enn man ønsker. Vil dette være tilstrekkelig "sperre" mot det? function realsafehtml($str) { // Don't do anything if there's no difference or if the original string is empty $oldstr = ""; while($str != $oldstr) { $oldstr = $str; //nuke script and header tags and anything inbetween $str = preg_replace("'<script[^>]*>.*</script>'siU", "", $str); $str = preg_replace("'<head[^>]*>.*</head>'siU", "", $str); //listed of tags that will not be striped but whose attributes will be (br|b|i, etc) $allowed = ""; //start nuking those suckers. don you just love MS Word's HTML? $str = preg_replace("/<((?!\/?($allowed)\b)[^>]*>)/xis", "", $str); $str = preg_replace("/<($allowed).*?>/i", "<\\1>", $str); } return mysql_escape_string($str); } // THIS FUNCTION READS THE $dir AND RETURNS ALL FOLDERS WITHIN IT AS AN ARRAY function directory($dir) { $handle = opendir($dir); if (!$handle) { return false; } $res = array(); while ($directory = readdir($handle)) { // See if $directory is a folder if(is_dir($dir.$directory)) { if ($directory != "." && $directory != "..") { $res[] = $directory; } } } closedir($handle); return $res; } $filesRootFolder = "C:/filer"; // If a folder is set if (isset($_GET['mappe']) && !empty($_GET['mappe'])) { $mappe = realsafehtml($_GET['mappe']); // Check for "dangerous" input, if so, set to default folder (also if folder doesn't exist if ((strpos($mappe, "..") > -1) || (strpos($mappe, "://") > -1) || (!is_dir($filesRootFolder . $mappe))) { $mappe = $filesRootFolder; } // Set to correct folder if nothing "bad" else { $mappe = $filesRootFolder . $mappe . "/"; } } else { $mappe = $filesRootFolder; } // Array $mapper = directory($mappe); Endret 23. november 2006 av ZoRaC Lenke til kommentar
olemedkrutt Skrevet 23. november 2006 Del Skrevet 23. november 2006 Jeg forstår ikke all koden din, men der hvor du filtrerer javascript kode, du er klar over at flere tags enn <script> kan brukes til å kjøre JS kode? F.eks. <img src="" onError="alert('lol')"> Lenke til kommentar
ZoRaC Skrevet 23. november 2006 Forfatter Del Skrevet 23. november 2006 realsafehtml() er en funksjon jeg fant blant kommentarene på PHP.net... Så vidt jeg vet, så fjerner denne ALLE tags: //listed of tags that will not be striped but whose attributes will be (br|b|i, etc) $allowed = ""; //start nuking those suckers. don you just love MS Word's HTML? $str = preg_replace("/<((?!\/?($allowed)\b)[^>]*>)/xis", "", $str); $str = preg_replace("/<($allowed).*?>/i", "<\\1>", $str); Lenke til kommentar
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å