A mysqli_real_escape_string() függvény használata

A mysqli_real_escape_string() függvény használata

A php weboldalunk egyik sebezhetősége általában az SQL Injection, az adatbázis sérülékenységből adódó hozzáférés. Egy példa, hogy egy ilyen hiba kihasználásával adminisztrátori hozzáférést szereznek a weboldalhoz, majd ezen keresztül módosíthatják az oldalt.

Az egyik tipikus hiba a belépéskor, és általában mindenféle adat megadáskor a bemenő adat ellenőrzésének a hibája. Mint már a korábbi mysql_real_escape_string() függvénnyel foglalkozó bejegyzésben jeleztük, az adatbázis lekérdezéshez az összes változót ellenőrizzük, vagy a mysqli_real_escape_string függvénnyel szűrjük meg a felhasználás előtt.

Példa a mysqli_real_escape_string() függvény alkalmazására

<?php

 $con=mysqli_connect("localhost","dbuser","dbpassword","dbname");

// Kapcsolódás ellenőrzése
 if (mysqli_connect_errno()) {
 echo "Adatbázi kapcsolódási hiba: " . mysqli_connect_error();
 }

// bejövő változók biztonsági szűrése
 $fname = mysqli_real_escape_string($con, $_POST['fname']);
 $lname = mysqli_real_escape_string($con, $_POST['lname']);
 $passwd = mysqli_real_escape_string($con, $_POST['passwd']);

$sql="INSERT INTO Logins (FName, LName, Passwd) VALUES ('$fname', '$lname', '$passwd')";

if (!mysqli_query($con,$sql)) {
 die('Hiba: ' . mysqli_error($con));
 }
 echo "1 record beszúrva.";

mysqli_close($con);
 ?>

Mint a fenti példa mutatja, az adatbázis lekérdezésben használt összes változót a mysqli_real_escape_string() segítségével megtisztítjuk a biztonság érdekében.

Egy gyors és jó megoldás lehet, ha a php kódunkban az összes hasonló módon használt  változót vizsgálunk íly módon, tehát nem kell egyesével beépítenünk a függvényt. Például azt mondhatjuk, hogy az összes $_POST változót áttöltünk és egyben meg is escape-eljük a mysql_real_escape_string() paranccsal:

$postarray = array_map("mysql_real_escape_string", $_POST);

Természetesen ebben az esetben a továbbiakban nem a $_POST tömbön kereszül használjuk az adatokat, hanem a $postarray tömbben lévőket.

A mysqli_real_escape_string() függvény hatása

Normál körülmények között a függvény használatában nem ér minket hátrány, ha figyelembe vesszük, hogy ez a védelem, milyen szekvenciákat nem enged meg.

Fontos megjegyezni, hogy ez a függvény sem véd meg minket az SQL injection-től. Sok egyszerű támadást, hibát kerülhetünk el a segítségével, de nem minden hibás hozzáférést fog megakadályozni.

No Comments.

Leave a Reply