PelleP Skrevet 15. mai 2010 Del Skrevet 15. mai 2010 Koden nedenfor er et eksempel fra boken Learning PHP, MySQL & JavaScript. Det jeg lurer på er funksjonen sanitizeString($var). Jeg trodde at den ville fjerne alle slasher og tagger fra datainput, slik at feks <<32// ville bli lest som 32, men det ser ikke ut til å være tilfelle. Er det fordi metoden ikke fungerer, eller fungerer den anorledes enn det jeg trodde den skulle? <?php //convert.php $f = $c = ""; if(isset($_POST['f'])) $f = sanitizeString($_POST['f']); if(isset($_POST['c'])) $c = sanitizeString($_POST['c']); if($f != '') { $c = intval((5 / 9) * ($f - 32)); $out = "$f grader Fahrenheit tilsvarer $c grader Celsius"; } elseif($c != '') { $f = intval((9 / 5) * $c + 32); $out = "$c grader Celsius tilsvarer $f grader Fahrenheit"; } else $out = ""; echo <<<_END <html> <head> <title> Temperatur konverterer </title> </head> <body> <pre> Tast in enten grader Fahrenheit eller grader Celsius og klikk på Konverter <b>$out</b> <form method="post" action="convert.php"> Fahrenheit <input type="text" name="f" size="7" /> Celsius <input type="text" name="c" size="7" /> <input type="submit" value="Konverter" /> </form> </pre> </body> </html> _END; function sanitizeString($var) { $var = stripslashes($var); $var = htmlentities($var); $var = strip_tags($var); return $var; } ?> Lenke til kommentar
Jonas Skrevet 15. mai 2010 Del Skrevet 15. mai 2010 (endret) Du kan lese mer om hva nøyaktig disse funksjonene gjør i dokumentasjonen. http://php.net/manual/en/function.stripslashes.php http://no2.php.net/manual/en/function.htmlentities.php http://no2.php.net/manual/en/function.strip-tags.php Ellers vil jeg bare nevne at dersom du har lest eller hørt at du skal være forsiktig med brukerinput, så er dette ikke veien å gå. For det første så er magic_quotes sjeldent på, hvilket gjør at stripslashes potensielt bare ødelegger dataen og for det andre så er det ikke sikkert at dataen skal printes ut eller at den ikke skal inneholde HTML-kode. Best practise er å kun kjøre den escaping som er av sikkerhetsmessige grunner er nødvendig i hvert ledd. mysql_real_escape_string (eller tilsvarende) når du skal sette dataen inn i en database og htmlentities når du skal vise den frem på en nettside. Det å escape data by default øverst i koden uavhengig av hva den skal brukes til er bad practise. Endret 15. mai 2010 av Jonas Lenke til kommentar
PelleP Skrevet 15. mai 2010 Forfatter Del Skrevet 15. mai 2010 O.K. Jeg bruker boken Learning PHP, MySQL & JavaScript og metoden sanitizeString blir foreslått brukt intill man lerer nøyktagig når man skal bruke de forskjellige metodene. Jeg ser nå at iflg Wikipedia så er magic_quotes "deprecated" siden PHP 5.3.0, er det ikke da litt rart at en bok fra juli 2009 foreslår bruk av metoden stripslaches? Uansett så tar jeg det til etteretning at den foreslåtte metoden for å sikre seg er bad practise. Takk for svar! 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å