NetHq Blog


A rossz legjobb kritikája az, ha megmutatjuk, hogyan kell jobban csinálni.

Weboldal biztonság - SQL injection

Nightvis, 2012.06.28 09:46
Ma már a legtöbb weboldal mögött található adatbázis, ha mást nem, a felhasználók adatait tárolják benne. Éppen ezért kiemelten fontos, hogy odafigyeljünk a biztonságra. PHP biztonság cikksorozatunkban az oldalunkra leselkedő veszélyeket és az ellenük való védekezést fogjuk ismertetni.

SQL injection:

Az SQL injection az egyik legalapvetőbb támadási forma, amikor SQL parancsot szúrunk be valamilyen beviteli mezőn keresztül. Vegyünk például egy beléptető form-ot. A felhasználó beírja a felhasználónevét és jelszavát, amit mi megvizsgálunk, hogy egyezik-e az adatbázisban tárolt adatokkal. 

$felhasznalo = $_POST[’felhasznalonev’];$jelszo = $_POST[’jelszo’];SELECT id FROM felhasznalok WHERE felhasznalonev=’$felhasznalo’ AND jelszo=’$jelszo’


Mi történik azonban akkor, ha valaki azt írja be a jelszó helyet, hogy: ' OR '1'='1

SELECT id FROM felhasznalok WHERE felhasznalonev=’user1’ AND jelszo=’’ OR ’1’=’1’


A fenti lekérdezés azt eredményezi, hogy bárki beléphet egy adott felhasználó nevében, pusztán a felhasználónév ismeretében. Ennek kivédésére a PHP adatbáziskezelő rétegének beépített függvényeit lehet használni, MySQL esetén ez a mysql_real_escape_string. A fenti példán keresztül így néz ki.

$felhasznalo = mysql_real_escape_string($_POST[’felhasznalonev’]);$jelszo = mysql_real_escape_string($_POST[’jelszo’]);SELECT id FROM felhasznalok WHERE felhasznalonev=’$felhasznalo’ AND jelszo=’$jelszo’


Mint fent látható, minimális erőfeszítéssel meg lehet védeni az oldalunkat az ilyen típusú támadástól, mégis sokan hagyják az oldalukat védelem nélkül, aminek az eredménye gyakran az, hogy feltörik a rendszerüket. Éppen ezért ne sajnáljuk az időt arra, hogy az oldalunk védve legyen.

Tartalom közösségi megosztása: