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.