Gå til innhold

stripslashes, strip_tags etc


Anbefalte innlegg

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
Videoannonse
Annonse

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

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

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...