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.