Mi az SQL Injection?

click fraud protection

A webes sebezhetőségek egyik legnagyobb osztálya „SQL Injection” vagy SQLi néven ismert. A strukturált lekérdezési nyelv, más néven SQL a az adatbázisok többségével való interakcióhoz használt nyelv, bár az adatbázistól függően a nyelv számos változatát használják felület. Minden olyan webhely, amely felhasználói adatokat, például fiókinformációkat tárol, vagy felhasználói feltöltési funkciót biztosít, például egy képtárhely, adatbázist használ az adatok tárolására.

Tipp: Az SQL-t általában „ess cue ell”-nek vagy „sequel”-nek ejtik, az első opció a brit angolban, a második pedig az amerikai angolban gyakoribb. Mindkét kiejtést általában akkor értjük, ha adatbázisokról beszélünk.

Mi az SQLi?

Az SQLi egy biztonsági rés, ahol a webfejlesztők megtervezik a kódot, amely kommunikál a A webszerver és az adatbázis nem valósít meg védelmet az a. által beküldött SQL-parancsok ellen felhasználó. A probléma az, hogy ki lehet lépni az adatbázis-utasításokból, és új argumentumokat vagy teljesen új utasításokat adhatunk hozzá. A módosított vagy második adatbázis-utasítás számos műveletet hajthat végre, beleértve a potenciálisan nagy léptékű törléseket vagy adatszivárgásokat.

A kihasználások jellemzően a meglévő állítások minden körülmények között igazzá tétele körül forognak, vagy egy második kötegelt parancs megadása, amely egy adott műveletet hajt végre, például az összes adat törlését vagy megjelenítését. Például egy webhelyre bejelentkező SQL utasítás ellenőrizheti, hogy a beküldött felhasználónév és jelszó egyezik-e az adatbázisban szereplő bejegyzéssel. Az SQL injekciós exploit eléréséhez megpróbálhat hozzáadni egy „or true” záradékot, például „or 1=1”. Ez a parancs a „bejelentkezés [ezzel] felhasználónévvel, ha a jelszó [ez], vagy ez az állítás igaz”.

Hogyan lehet megakadályozni az SQLi-t

Az SQLi korábban nagyon gyakori módja volt a webhelyek adatbázisának feltörésének, majd online kiszivárgásának. Azon összehangolt erőfeszítéseknek köszönhetően, hogy a biztonsági tudatosság a fejlesztői képzés részét képezze, ezt a sérülékenységi osztályt nagyrészt feloldották, és már csak ritkán látni.

Az SQLi megelőzésének helyes módja az előkészített utasítások, más néven paraméterezett lekérdezések. Hagyományosan az SQL-utasításokat deklarálják, és a felhasználói bevitelt a deklaráció során összefűzik. Az előkészített utasításokkal az adatbázis parancs kiírásra kerül, majd egy sperate függvény futtatja a parancsot, és beszúrja a felhasználói adatokat. Bár ez kisebb különbségnek tűnhet, teljesen megváltoztatja a parancs kezelését. A különbség megakadályozza az értelmes SQL-parancsok futtatását, és minden felhasználói bevitelt karakterláncként kezel, megakadályozva az SQL-injektálást.