logo   PHP / MySQL mysqli_real_escape_string




Den simpleste måde, hvorpå en vis beskyttelse mod sql-injection kan opnås, er ved at benytte mysqli-funktionen 'mysqli_real_escape_string()'.


Funktionen anvendes i forbindelse med hvert enkelt datafelt der indgår i INSERT og UPDATE ændringer i en db-tabel.


Funktionen fungerer ved at "karakterer, der ikke kan være en del af en tilladt datastreng bliver konverteret til en 'escape streng' ved at få "\" foranstillet". Dens evt. skadevoldende effekt bliver derved nulstillet.


Funktionaliteten kodes ved at:

- De variabler, der skal indgå i opdateringen af databasen "køres igennem" mysqli_real_escape_string()
- De bahandlede variabler tildeles er nyt navn; f.eks. ved at tilføje "_a" til deres oprindelige navn.
- De nye variabelnavne anvendes i INSERT- og UPDATE- rutinerne.

Ved at omdøbe variablerne til '$xx_a' variabler sikres det, at de originale variabler forbliver intakte og vil i given situation efterfølgende kunde bruges til andet formål uden at være blevet 'escapede'.


Insert


if ($fejlbeskeder == "")
{
   $tekst_osk_a    = mysqli_real_escape_string($db_link, $tekst_osk);
   $tekst_tekst_a = mysqli_real_escape_string($db_link, $tekst_tekst);
   $tekst_ref_a     = mysqli_real_escape_string($db_link, $tekst_ref);
   $query = "
       INSERT INTO tekster
       (    tekst_ref,        tekst_osk,        tekst_tekst) VALUES
       ( '$tekst_ref_a', '$tekst_osk_a', '$tekst_tekst_a')
       ";
       $result = mysqli_query ($db_link, $query) or die (mysqli_error ($db_link));
       header ("Location: tekster_select.php");
       exit;
    }




Update


if ($fejlbeskeder == "")
{
   $tekst_osk_a   = mysqli_real_escape_string($db_link, $tekst_osk);
   $tekst_tekst_a = mysqli_real_escape_string($db_link, $tekst_tekst);
   $tekst_ref_a    = mysqli_real_escape_string($db_link, $tekst_ref);
   $query = "
      UPDATE tekster SET
      tekst_osk   = '$tekst_osk_a',
      tekst_tekst = '$tekst_tekst_a',
      tekst_ref    = '$tekst_ref_a'
   WHERE tekst_id = $tekst_id";
   $result = mysqli_query ($db_link, $query) or die (mysqli_error ($db_link));
   header ("Location: tekster_select.php");
   exit;
}




















x
x